autosetuprebase vs autosetupmerge

匿名 (未验证) 提交于 2019-12-03 01:29:01

问题:

I was just knocking around in my global .gitconfig file and I noticed that I've managed to end up with this:

[branch]   autosetupmerge = always   autosetuprebase = always

That seemed more than a little counterintuitive, but after doing some reading, I still have no idea whether I need both or whether it's sufficient to remove autosetupmerge and just retain autosetuprebase. Most projects that I'm working have a straight downstream->upstream flow, so rebasing is generally preferred when dealing with branches.

回答1:

You probably don't need to set up autosetupmerge---the default is true.



回答2:

What is counterintuitive here is the naming of these preferences. They do look like they refer to the same functionality, but in fact they don't:

  • autosetupmerge controls whether git branch and git checkout -b imply the --track option, i.e. with your setting of always,
    • git checkout branchname, if branchname exists on a remote but not locally, will create branchname tracking its remote counterpart
    • git checkout -b newbranch will create a new branch newbranch tracking whichever branch you had checked out before issuing this command
  • autosetuprebase controls whether new branches should be set up to be rebased upon git pull, i.e. your setting of always will result in branches being set up such that git pull always performs a rebase, not a merge. (Be aware that existing branches retain their configuration when you change this option.)

So it makes perfect sense to have both autosetupmerge = always and autosetuprebase = always; in fact, that's also what I have.



回答3:

since this is the first hit, if you search for "autosetuprebase" with google, here an advice:

git config --global branch.autosetuprebase always

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



回答4:

It's probably worth mentioning that there is a difference between autosetupmerge=always (in your config) and autosetupmerge=true (the default).

true will only setup merging for remote branches. always will include local branches as well.

You probably want true.



回答5:

As I was looking for other possible options of "autosetuprebase" and it took some time to find them, here they are:

branch.autosetuprebase

When a new branch is created with git branch or git checkout that tracks another branch, this variable tells Git to set up pull to rebase instead of merge (see "branch..rebase").

  • When never, rebase is never automatically set to true.
  • When local, rebase is set to true for tracked branches of other local branches.
  • When remote, rebase is set to true for tracked branches of remote-tracking branches.
  • When always, rebase will be set to true for all tracking branches.

Source: http://git-scm.com/docs/git-config.html



转载请标明出处:autosetuprebase vs autosetupmerge
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!