gpt4 book ai didi

git - 如何处理这个 git 警告? "Pulling without specifying how to reconcile divergent branches is discouraged"

转载 作者:行者123 更新时间:2023-12-01 23:13:16 29 4
gpt4 key购买 nike

经过 git pull origin master我收到以下消息:

warning: Pulling without specifying how to reconcile divergent branches is
discouraged. You can squelch this message by running one of the following
commands sometime before your next pull:

git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only

You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or --ff-only on the command line to override the configured default per
invocation.

remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 51.49 KiB | 850.00 KiB/s, done.
那么pull就成功了。但是,我仍然对这条消息表示怀疑。
在这种情况下,最好的做法是什么?

最佳答案

In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD.


当你做 git pull origin master , git pull执行 merge ,这通常会创建 merge 提交。因此,默认情况下,从远程 pull 并不是一个无害的操作:它可以创建一个以前不存在的新提交 sha。这种行为会使用户感到困惑,因为感觉应该是无害的下载操作实际上以不可预测的方式改变了提交历史。
为避免这种情况,您需要
git pull --ff-only
(或不?继续阅读,看看哪一个符合您的要求)
git pull --ff-only , Git 只会更新你的分支,如果它可以“快进”而不创建新的提交。如果做不到, git pull --ff-only只是中止并显示错误消息。
您可以将 Git 客户端配置为始终使用 --ff-only默认情况下,即使您忘记了命令行标志,您也会得到这种行为:
git config --global pull.ff only
注意: --global标志将更改应用于您机器上的所有存储库。如果您只希望对您所在的存储库进行此行为,请省略该标志。
取自 here

这个警告是在 Git 2.27 中添加的。
这是完整警告的样子:

Pulling without specifying how to reconcile divergent branches isdiscouraged. You can squelch this message by running one of the followingcommands sometime before your next pull:

git config pull.rebase false     # merge (the default strategy)
git config pull.rebase true      # rebase
git config pull.ff only               # fast-forward only

You can replace "git config" with "git config --global" to set a defaultpreference for all repositories. You can also pass --rebase, --no-rebase,or --ff-only on the command line to override the configured default perinvocation.


警告显示三个命令作为选项,所有这些都将抑制警告。但它们有不同的用途:
git config pull.rebase false     # merge (the default strategy)
这将保留默认行为并抑制警告。
git config pull.rebase true      # rebase
这实际上是在远程分支之上提交,在本地和远程维护一个分支(与涉及两个不同分支的默认行为不同 - 一个在本地,另一个在远程 - 并且,将两者结合起来,执行 merge )。
git config pull.ff only          # fast-forward only
如果本地分支可以快进,这只会执行 pull 。如果没有,它会简单地中止并显示错误消息(并且不会创建任何提交)。

更新:
如果您有 Git 2.29或以上,您现在可以设置 pull.fffalse , trueonly摆脱警告。
git config pull.ff true
true - 这是默认行为。如果可能, pull 是快进的,否则它被 merge 。
git config pull.ff false
false - pull 永远不会快进,并且总是会创建 merge 。
git config pull.ff only
only - 如果可能, pull 快进,否则操作将中止并显示错误消息。

关于git - 如何处理这个 git 警告? "Pulling without specifying how to reconcile divergent branches is discouraged",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62653114/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com