我有一个包含两个分支的git存储库,1.0和master。如果我想在1.0上工作,我使用以下命令克隆它:
git clone ssh://user@server/project -b 1.0 project-1.0
一切都很好。如果我发出git branch
命令,我会看到:
1.0
git branch -a
看起来像这样:
* 1.0
remotes/origin/1.0
remotes/origin/HEAD -> origin/master
remotes/origin/master
但是,如果其他人将更改推送到master并且我对1.0进行更改并尝试推送,则会失败,因为我需要使用主更改来更新我的repo。为此,我检查主人,拉出更改,然后切换回1.0:
git checkout master
git pull
git checkout 1.0
但是,有没有一种更简单的方法可以在不必先检查主数据的情况下提取最新的更改?
答案 0 :(得分:3)
如果您使用git fetch origin
,则会更新origin
遥控器下的所有远程跟踪分支。这不会更改任何“您的”分支,但您可以从任何远程跟踪分支合并到您的1.0
分支。
用最简单的术语来说,git pull
基本上是git fetch
后跟git merge
。
答案 1 :(得分:3)
在这种特殊情况下,当master可以快速转发到origin / master时,我
做git push . origin/master:master
(是的,这是一个点'。')。
答案 2 :(得分:1)
根据您的git branch -a
,您不拥有名为master
的本地分支。因此,git log master
不应该起作用。远程跟踪分支 - 即origin/master
- 在您获取时始终会更新。因此,如果您想查看来自master
遥控器的origin
分支的日志,您只需git fetch; git log origin/master
即可。听起来你不想拥有自己的master版本,因此git checkout master
可能是一个错误,只会让你的工作流程感到困惑。
但是,如果其他人将更改推送到master并且我对1.0进行更改并尝试推送,则会失败,因为我需要使用主更改来更新我的repo。
事实并非如此。只要没有人将不同的变化推向1.0,你就可以推动它。主分支没有什么特别之处。您可以使用git branch -d master
(如果它与1.0不同,会通知您它已合并到origin/master
但不会合并到HEAD),因为您似乎对维护自己不感兴趣版本的主人。
再一次,有人推动掌握不会阻止你推送到1.0,而你不需要结账本地master
只是为了检查origin/master
。