" git push -u"的目的是什么?命令?

时间:2015-05-16 13:21:19

标签: git

AFAIK,git在输入以下命令时执行以下操作:

" git push -u origin master":

  1. Git检查主分支是否位于远程仓库中。如果没有它会创建它。
  2. Git确定本地分支和远程分支之间的差异。 Git更新"差异"在远程分支。
  3. Git还将在名为" origin / master"的本地机器中创建一个新的REMOTE TRACKING分支。跟踪远程分支。
  4. Git将设置名为" master"的非跟踪分支。成为跟踪分支(为了跟踪" origin / master")。
  5. 这将导致存在3个分支:

    • 跟踪分支名为" master"在我的本地机器(跟踪原点/主人)。
    • 远程跟踪分支名为" origin / master"在我的本地机器上。
    • 远程分支名为" master"在远程存储库"

    这是对的吗?

    重新编辑:假设主分支存在于本地计算机中。

    提前致谢。

1 个答案:

答案 0 :(得分:3)

推送前,master分支必须存在 这意味着必须在新创建的仓库中完成至少一次提交(正如我在" Why do I need to explicitly push a new branch?"中所解释的那样。)

然后创建remote tracking branch origin/master和远程upstream repo上的主分支。

至第4点(因为master已经存在),创建的是本地分支masterupstream branch之间的关联(因此-u--upstream-to origin/master中的选项.gitconfig

[branch "master"]
       remote = origin
       merge = refs/heads/master

来自the discussion

  

因此,如果我可以让master分支直接跟踪远程分支,那么我可以获得哪些好处:

     

" master"指向" origin/master"指向"远程master"?

     

我有这个额外的中间人分支有什么好处?

您确实可以使用 git push https://<login>@github.com/<login>/<repo> master:master.

直接推送到远程分支

在本地分支master和远程跟踪(origin/master)之间正式建立跟踪关系的好处是记录推送到(git push)的位置或从哪里到从(git pull)合并。