我有一个包含两个分支的git存储库,1.0和master。如果我想在1.0上工作,我可以使用以下命令克隆它:
git clone ssh://user@server/project -b 1.0 project-1.0一切都很好。如果我发出git branch命令,我会看到:
1.0git branch -a看起来像这样:
* 1.0
  remotes/origin/1.0
  remotes/origin/HEAD -> origin/master
  remotes/origin/master但是,如果其他人将更改推送到master,而我对1.0进行了更改并尝试推送,它将失败,因为我需要使用master更改更新我的存储库。为此,我签出master,拉出更改,然后切换回1.0:
git checkout master
git pull
git checkout 1.0但是,有没有一种更简单的方法,我可以拉出最新的更改,而不必先签出母版?
发布于 2011-02-11 23:16:28
根据您的git branch -a,您没有名为master的本地分支。因此,git log master应该不起作用。远程跟踪分支-即origin/master -总是在您获取时更新。因此,如果您想从origin远程查看master分支的日志,您所要做的就是git fetch; git log origin/master。听起来你不想拥有自己版本的master,因此git checkout master可能是一个错误,它只是混淆了你的工作流程。
但是,如果其他人将更改推送到主服务器,而我更改了1.0并尝试推送,它将失败,因为我需要使用主更改更新我的存储库。
这不是真的。只要没有人将不同的更改推到1.0,您就可以推到它。主分支没有什么特别之处。你可以使用git branch -d master (如果它已经偏离了1.0,它会通知你它已经合并到origin/master,但不是HEAD),因为你似乎对维护自己的master版本不感兴趣。
再说一次,有人推到master并不会阻止你推到1.0,而且你不需要仅仅为了检查origin/master而签出本地master。
发布于 2011-02-11 17:13:29
如果使用git fetch origin,则将更新origin remote下的所有远程跟踪分支。这不会改变任何“你的”分支,但是你可以从任何远程跟踪分支合并到你的1.0分支。
最简单地说,git pull本质上就是一个git fetch后跟一个git merge。
发布于 2011-02-11 18:58:00
在这种特殊情况下,当master可以快进到源/master时,我执行git push . origin/master:master (是的,它是一个点'.')。
https://stackoverflow.com/questions/4967187
复制相似问题