Why do I need to do `--set-upstream` all the time?

后端 未结 21 2270
南方客
南方客 2020-11-22 09:15

I create a new branch in Git:

git branch my_branch

Push it:

git push origin my_branch

Now say someone mad

21条回答
  •  一生所求
    2020-11-22 09:39

    A shortcut, which doesn't depend on remembering the syntax for git branch --set-upstream 1 is to do:

    git push -u origin my_branch
    

    ... the first time that you push that branch. Or, to push to the current branch to a branch of the same name (handy for an alias):

    git push -u origin HEAD
    

    You only need to use -u once, and that sets up the association between your branch and the one at origin in the same way as git branch --set-upstream does.

    Personally, I think it's a good thing to have to set up that association between your branch and one on the remote explicitly. It's just a shame that the rules are different for git push and git pull.


    1 It may sound silly, but I very frequently forget to specify the current branch, assuming that's the default - it's not, and the results are most confusing :)

    Update 2012-10-11: Apparently I'm not the only person who found it easy to get wrong! Thanks to VonC for pointing out that git 1.8.0 introduces the more obvious git branch --set-upstream-to, which can be used as follows, if you're on the branch my_branch:

    git branch --set-upstream-to origin/my_branch
    

    ... or with the short option:

    git branch -u origin/my_branch
    

    This change, and its reasoning, is described in the release notes for git 1.8.0, release candidate 1:

    It was tempting to say git branch --set-upstream origin/master, but that tells Git to arrange the local branch origin/master to integrate with the currently checked out branch, which is highly unlikely what the user meant. The option is deprecated; use the new --set-upstream-to (with a short-and-sweet -u) option instead.

提交回复
热议问题