autosetuprebase vs autosetupmerge

我只是在我的全球.gitconfig文件中敲,我注意到,我已经设法结束了这一点:

 [branch] autosetupmerge = always autosetuprebase = always 

这看起来有点违反直觉,但在做了一些阅读之后,我仍然不知道是否需要这两者,或者是否足以删除autosetupmerge并保留autosetuprebase 。 我工作的大多数项目都有一个直下游 – >上游stream程,所以在处理分支机构时,重新分配通常是首选。

你可能不需要设置autosetupmerge —默认是true。

这些偏好的命名是违反直觉的。 他们看起来像他们提到相同的function,但实际上他们不:

  • autosetupmerge控制是否git branchgit checkout -b意味着--track选项,即与您的设置always
    • git checkout branchname ,如果branchname存在于远程但不在本地,将创buildbranchname跟踪其远程副本
    • git checkout -b newbranch会创build一个新的分支newbranch跟踪你发出这个命令之前检出的那个分支
  • autosetuprebase控制是否应该设置新的分支在git pull设置,即你的设置always会导致分支被设置,这样git pull总是执行rebase而不是merge。 (请注意,当您更改此选项时,现有分支会保留其configuration。)

所以autosetupmerge = alwaysautosetuprebase = always是非常autosetuprebase = always ; 其实这也是我的。

因为这是第一次打击,如果你search“autosetuprebase”与谷歌,在这里一个build议:

 git config --global branch.autosetuprebase always 

来源http://mislav.uniqpath.com/2010/07/git-tips/

值得一提的是autosetupmerge = always(在你的configuration中)和autosetupmerge = true(默认值)之间是有区别的。

true将只设置远程分支的合并。 总是会包括当地的分支机构。

你可能要真实。

当我正在寻找其他可能的选项“autosetuprebase”,并花了一些时间来find他们,在这里他们是:

 branch.autosetuprebase 

当使用git branchgit checkout创build一个新的分支来跟踪另一个分支时,这个variables告诉Git将pull设置为rebase而不是merge(参见“branch..rebase”)。

  • never ,rebase永远不会自动设置为true。
  • local ,其他当地分行的追踪分行设置为“真”。
  • remote ,远程跟踪分支的跟踪分支的rebase设置为true。
  • always ,所有跟踪分支的rebase将被设置为true。

资料来源: http : //git-scm.com/docs/git-config.html