如何与其他人同时更改存储库?
我对Git相当陌生。现在我只有一个存储库的主分支。我开始与另一个人合作,我很困惑我如何能够与这个人同时进行调整。我使用Tower,所以我不需要在命令行上学习任何东西 - 我只是在寻找一个流程描述。如何与其他人同时更改存储库?
我的直觉是每个人都有我们自己的分支机构,我们分开工作。这是正确的方法吗?一旦工作完成,我们是否将这些分支与我们的主人合并?
假设这个其他人进行了更改并将其提交给主分支,而我一直在分支中处理其他事务 - 我如何将他的工作与我自己的工作合并?
如果您都在同一分支上工作,并且他推送了他的更改,那么您将无法推送您的更改。但是你可以做的是将更改拉入你的本地副本,这将合并你的更改。如果有一些冲突,你将不得不手动解决它们。然后,您可以推送该合并的结果,该结果将包含两组更改。
一般来说,为你和他的一个分支可能没有意义。有意义的是创建“feature branches”。如果您正在使用功能A,请为其创建一个分支。完成后,将其合并回主。这允许您即使在您的功能未完成时也可以进行紧急错误修正。
以下是我感到困惑的地方 - 我是否会提取他的更改,获取他的更改,或将他的更改合并到本地回购协议中?你是说从远程回购拉动合并他和我的变化,对吗? – 2012-02-28 19:53:54
拉取与合并后进行提取相同(如有必要)。所以,是的,如果你拉,git会合并你的更改并创建一个合并提交。 – svick 2012-02-28 20:03:41
一个人必须先推动,然后如果你尝试推动,你会得到一个错误,有一些变化,推到回购会覆盖这些变化。如果发生这种情况,您需要获取这些更改并将它们合并到您的工作中,然后推送到回购并且应该被接受。其他人也必须这样做。
你必须pull
更新merging
他们所做的更改(可能是解决conflicts
)之前,如果它已发散,你可以push
更改为remote
(别人有pushed
)从你最后一次pulled
。
这是不独有的Git,每VCS要求您拉的变化,应对合并,你可以推到中央/远程仓库前发生冲突。
这个工作流程没有什么神奇的。
与d之差(istributed)如Git VCS是每存储库是一个远程和中央库的想法是一个惯例,不像CVS或颠覆(和其他人都集中) 。
Git只是非常善于处理以非常复杂的方式进行合并,因此大多数时候都会将冲突最小化。
您是否明白存储库是分散的?你们都可以提交给同一个分支,但是在推/拉之前不会看到对方的变化吗? – 2012-02-28 19:28:26