2014-03-31 99 views
0

我建立了一个GitHub项目(origin)。GitHub的git结账

然后,我将这个回购复制到一堆不同的机器(例如我的本地计算机,生产环境,临时环境等)。

我在本地机器上进行更改,然后推送到origin

最终,我将我的开发分支合并到origin/master中。

然后我想把这些变化从origin/master拉到我的生产环境中,所以;

[email protected]$ git --version 
git version 1.7.9.5 
[email protected]$ git remote 
origin 
[email protected]$ git branch -r 
    origin/HEAD -> origin/master 
    origin/master 
    ... 

从这里,我试过了一切;

git fetch 
git checkout master 
---------------------------------- 
git checkout origin/master 
---------------------------------- 
git checkout -b origin/master HEAD 

但他们都没有工作(即,变化从未体现)。直到我没有

git pull origin master 

它终于工作。但我不明白为什么我不能只检查主人?一切我读的SO说,使用checkoutgit checkout remote branch) - 我不明白这一点:S

回答

1

git fetch获取对象和更新远程origin/master;它不会更改任何本地分支机构。要经过取合并origin/mastermaster,你可以使用merge

git merge origin/master 

git pull只是一个git fetch加上git merge。你通常甚至不需要指定分支和远程名称;如果你设置了上游的分支origin,你可以运行:

git pull 

,它会假设你的意思,以获取当前分支的上游,并将其合并到当前分支。

+0

感谢您的回复。我想我明白了 - 但为什么我不能检出origin/master?也许做一个“拉”是正确的方法,但现在我只是好奇为什么我不能结账? – Joney

+0

@Joney:你应该可以查看'origin/master',但是你会进入“detached HEAD”状态,并且你所做的改变不会自动反映到'master'上。 (你在那个时候并不是'主人'。) – Ryan

+0

我以前见过分离的HEAD消息。什么是正确的git命令来做到这一点? – Joney