GIT分支工作流程

时间:2012-02-25 00:10:44

标签: git github versioning

在大型团队项目中工作这是我们的工作流程:

 // create branch
 git checkout -b mybranch
 (do work)
 // commit to branch locally
 git commit -a
 // push to remote
 git push origin mybranch
 (repeat)

完成在我们的分支中工作后,我们将分支合并为master:

 // go to master
 git checkout master     
 // update
 git pull master
 // merge our branch into master
 git merge mybranch
 (solve conflicts)
 git push

现在我们重复上述步骤,工作流程好几天。现在突然间每个人都在获得其他组成员分支和主人的非正向更新。例如某人git在master中拉,然后合并但他们无法推送。它说非快进推。这很奇怪,因为它说主人是完全最新的。

以下是git pull之后,git merge mybranch,git push:

  ! [rejected]        master -> master (non-fast-forward)
  error: failed to push some refs to 'git@github.com:foo/project.git'
  To prevent you from losing history, non-fast-forward updates were rejected
  Merge the remote changes (e.g. 'git pull') before pushing again.  See the
  'Note about fast-forwards' section of 'git push --help' for details.

然而,git pull表示我们是最新的。

所以问题是,GIT中大型团队的预期工作流程是什么?我们应该如何处理分支机制。

谢谢!

1 个答案:

答案 0 :(得分:3)

您以前的工作流程没有问题。

您拉入新更改,将分支合并在一起,然后推出合并后的结果。根据您的选择,您可以使用rebase代替merge进行从未公开的更改。

这里的问题很可能是有人在他们的本地副本中重写历史;如果发生这种情况,您将“更新” - 例如,您的工作副本与远程端相同 - 但您将无法推送。

如果您对存储库执行了新的克隆,并从那里执行mergepush,则可能会成功。