我想设置一个本地跟踪分支,它将通过合并而不是通过变基跟踪远程分支。
当我这样做时,git pull
我想从远程分支合并,而不是变基。
当我做:
git checkout -b someBranch origin/someBranch
Run Code Online (Sandbox Code Playgroud)
进而
git remote show origin
Run Code Online (Sandbox Code Playgroud)
我懂了:
Local branches configured for 'git pull':
someBranch rebases onto remote someBranch
Local refs configured for 'git push':
someBranch pushes to someBranch (local out of date)
Run Code Online (Sandbox Code Playgroud)
如果我这样做,也会发生同样的事情
git checkout --track origin/someBranch
Run Code Online (Sandbox Code Playgroud)
这是在本地以某种方式配置的吗?
我该如何改变这种行为?
默认情况下,GITmerge
在拉取期间执行。如果您正在执行 rebase,那么您似乎在某个时间点改变了这种行为。或者有帮助的人为你做了那件事。
引用这篇文章(1)和这篇文章(2)和这篇文章(3) - 它们都描述了如何做相反的事情:
(来自 1)GIT 中有一个配置标志,启用后,会将pull
from的默认行为更改merge
为rebase
。检查您是否已设置:
# git >= 1.7.9:
git config --global pull.rebase
git config pull.rebase
Run Code Online (Sandbox Code Playgroud)
在较新的 GIT 客户端中,它可以直观地工作。如果是true
. 关掉旗子就好了
然而,在较旧的情况下,它的工作方式有所不同。
# git < 1.7.9:
git config --global branch.autosetuprebase
git config branch.autosetuprebase
# and also
git config branch.<name>.rebase
Run Code Online (Sandbox Code Playgroud)
当autosetuprebase
设置为 时always
,git 会自动rebase
在每个新分支上设置标志。这意味着只有您可能不仅要禁用autosetuprebase
,还要关闭rebase
每个分支的已设置标志。
(来自 #2)
如果你想要另一种方式(即你有旧的 GIT 客户端和大量的分支,并且你确实介意编写一个重置标志的脚本)那么另一种选择是创建一个别名来git pull
添加--no-rebase
选项,什么会迫使它进行合并。
(来自#3)
这篇文章说每个分支的rebase
标志保存在一个配置文件中。因此,关闭autosetuprebase
后,您似乎可以通过rebase
从该配置文件中删除所有行来快速禁用所有或某些分支的变基。
归档时间: |
|
查看次数: |
51 次 |
最近记录: |