我只是在我的全局 .gitconfig
文件中转来转去,我注意到我已经设法结束了:
[branch]
autosetupmerge = always
autosetuprebase = always
这似乎有点违反直觉,但经过一些阅读后,我仍然不知道我是否需要两者,或者是否足以删除 autosetupmerge
并只保留 autosetuprebase
。我工作的大多数项目都有直接的下游-> 上游流程,因此在处理分支时通常首选 rebase。
最佳答案
这里违反直觉的是这些首选项的命名。它们看起来确实指的是相同的功能,但实际上它们并非如此:
autosetupmerge
控制git branch
和git checkout -b
是否暗示--track
选项,即与您的always
设置,git checkout branchname
,如果branchname
存在于远程但不存在于本地,将创建branchname
跟踪其远程副本git checkout -b newbranch
将创建一个新分支newbranch
跟踪您在发出此命令之前 checkout 的任何分支
autosetuprebase
控制是否应将新分支设置为重新基于git pull
,即您设置的always
将导致分支被设置这样git pull
总是执行 rebase ,而不是 merge 。 (请注意,当您更改此选项时,现有分支会保留其配置。)
因此,同时拥有 autosetupmerge = always
和 autosetuprebase = always
非常有意义;事实上,这也是我所拥有的。
关于git - autosetuprebase 与 autosetupmerge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480069/