什么是`git push origin master`?帮助git的refs,head和remotes

时间:2011-09-05 19:20:56

标签: git

我对git push origin master的作用有疑问:

  • 我知道origin是远程(又名GitHub)
  • git push origin mastergit 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

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

  • 我在主分公司
  • 我想从github上的my_test分支推送和拉取,只需输入git pushgit pull

2 个答案:

答案 0 :(得分:36)

Git有两种类型的分支:localremote。要根据需要使用git pullgit push,您必须告知当地分支机构(my_test)它正在跟踪哪个远程分支。在典型的Git方式中,这可以在配置文件和命令中完成。

<强>命令

确保您使用

进入master分支机构

1)git checkout master

然后用

创建新分支

2)git branch --track my_test origin/my_test

并用

查看

3)git checkout my_test

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

但是,如果您已经创建了分支,那么您可以使用-u开关告诉git的pushpull您要使用指定的本地和远程分支现在,就像这样:

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

<强>配置

设置远程分支跟踪的命令相当简单,但我列出了配置方式,并且如果我设置了一堆跟踪分支,我会发现它更容易。使用您喜欢的编辑器打开您的项目.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使用它作为远程。

运行上述命令后,您可以在配置中找到与此非常相似的内容。

一些有用的资源:

答案 1 :(得分:13)

或者作为一个命令:

git push -u origin master:my_test

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