2011-02-12 88 views
1

变化我是新来的git,和它说,它的特点之一就是一切都是本地的,所以你提交修改时不在线。冲突上的git

会发生什么,如果你下线,做一些修改,提交等,又过了几分钟后,你就是重新联机,另一个人做出改变,其中有些是在同一个地方之前,你做了你的变化。两人都不知道他们做出了相同/相似的更改。将更改推送到服务器时会发生什么? 这改变得到“放”

回答

4

谁推到共享存储库可以把他们的提交没有问题的第一个。当第二个人试图推动他们的变化时,git检测到冲突并拒绝推送。第二个人则必须先拉第一人称的变化和它们合并到他们的本地仓库。成功合并后,人2然后将合并的更改推送到共享存储库。

0

所做的更改首先得到放入。然后,当您尝试提交更改时,git将尝试合并,如果git不成功,则提交将返回一个错误,并且您的源文件将在有冲突 - 你会看到每个冲突的变化并排。您必须经历每次冲突并选择要提交的正确更改。

2

Git非常聪明,如果您没有任何更改,它绝不会让您推动。

在这种情况下会发生什么是你将不得不拉,在这拉Git会尝试合并你的变化与服务器中的变化(同时由其他人完成)。

如果它能够自动合并更改,则不会发生任何情况。如果它不够聪明,它会给你一个你必须解决的冲突,git有一个非常聪明的方式来表达冲突,而且它们通常很容易修复。

在这里你有正式的手动修复冲突:http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#resolving-a-merge