什么是`git push origin master`? 帮助与GIT的裁判,头和遥控器

我有一个关于git push origin master问题:

  • 我知道, origin是远程(又名GitHub)
  • git push origin mastergit push origin master_on_my_machine:master_on_github相同git push origin master_on_my_machine:master_on_github

我不知道是否:

  • master_on_my_machine等于/refs/heads/master
  • master_of_github等于/refs/remotes/origin/master

如果它是平等的,应该可以做git push origin refs/heads/master:refs/heads/origin/master

最后,我想要做的只是在以下情况下inputgit pushgit pull

  • 我在一个主分支上
  • 我想从github上的my_test分支git push ,只能inputgit pushgit pull

Git有两种types的分支: localremote 。 要使用git pullgit push ,你必须告诉你的本地分支( my_test )跟踪哪个远程分支。 在典型的Git中,这可以在configuration文件和命令中完成。

命令

确保你在你的master分支上

1) git checkout master

然后创build新的分支

2) git branch --track my_test origin/my_test

并检查出来

3) git checkout my_test

然后您可以push ,而无需指定哪个本地和远程。

但是,如果您已经创build了分支,那么您可以使用-u开关来告诉git的push ,并从现在开始使用指定的本地和远程分支,如下所示:

 git pull -u my_test origin/my_test git push -u my_test origin/my_test 

configuration

设置远程分支跟踪的命令是相当直接的,但我列出了configuration方式,以及我发现更容易,如果我设置了一堆跟踪分支。 使用你最喜欢的编辑器打开你的项目的.git/config并添加到底部。

 [remote "origin"] url = git@github.com:username/repo.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "my_test"] remote = origin merge = refs/heads/my_test 

这指定了一个远程调用的origin ,在这个例子中是一个GitHub风格,然后告诉分支my_test使用它,因为它是远程的。

在运行上面的命令之后,你可以在configuration中find与此类似的东西。

一些有用的资源:

或者作为一个命令:

 git push -u origin master:my_test 

将提交从本地主分支推送到(可能是新的)远程分支my_test并设置master跟踪origin/my_test