如何与其他人同时更改存储库?

时间:2012-02-28 19:21:09

标签: git version-control commit collaboration

我对Git很新。现在我只有一个存储库的主分支。我开始与另一个人合作,我很困惑如何在这个人的同时做出调整。我正在使用Tower,所以我不需要在命令行学习任何东西 - 我只是在寻找流程描述。

我的直觉是每个人都有我们自己的分支机构,我们正在单独处理。这是正确的方法吗?一旦工作完成,我们是否只将这些分支与我们的主人合并?

让我们说这个人做了一个改变并将其提交到主分支,而我一直在分支中的其他东西 - 我如何将他的工作与我自己的工作合并?

3 个答案:

答案 0 :(得分:5)

如果你们都在同一个分支上工作,并且他推动了他的更改,那么你将无法推动你的更改。但您可以做的是将更改提取到本地副本中,这将合并您和他的更改。如果存在一些冲突,则必须手动解决。然后,您可以推送该合并的结果,该结果将包含两组更改。

一般来说,为你设一个分支,为他设一个分支可能没有意义。有意义的是创建“feature branches”。如果您正在处理功能A,请为其创建分支。完成后,将其合并回master。例如,即使您的功能尚未完成,也可以让您掌握紧急错误修正。

答案 1 :(得分:2)

一个人必须先推,然后如果你试图推,你会得到一个错误,有一些变化,推动回购会覆盖这些变化。如果发生这种情况,您需要获取这些更改并将它们合并到您的工作中,然后推送到repo并应该接受它。其他人也必须这样做。

答案 2 :(得分:2)

您必须pull更新merging这些更改(可能会解析conflicts),然后才能pushremote进行更改上次pushed时分歧(其他人有pulled)。

这是Git独有的,每个VCS都要求您在推送到中央/远程存储库之前提取更改,处理合并和冲突。

这个工作流程没有什么神奇之处。

像Git这样的D(归因)VCS的不同之处在于每个存储库都是远程,并且中央存储库的想法是一个约定,不像CVS或Subversion(和其他集中的)。

Git非常善于以非常复杂的方式处理合并,因此它可以最大限度地减少冲突。