例如,让我们说两个用户拉出相同版本的项目。两个用户都编写相同的功能,但以不同的方式执行。用户A提交他们的工作并推送到主分支。用户B然后提交并尝试推送到主分支。不会有问题,因为现在有两个相同功能的版本?
请原谅我,如果这是一个模糊或愚蠢的问题,因为我真的不知道我在做什么版本控制(git是我的第一个)。
答案 0 :(得分:4)
首先,用户A和用户B必须各自拥有自己的存储库。由于它们在一起工作,因此它们还可以在一些共享位置具有中央存储库,以便共享更改。 (或者,他们可以直接从彼此的存储库中推送。)当用户B试图推送他的更改时,git将不允许它。他需要先执行合并并手动解决任何冲突。
答案 1 :(得分:2)
我想我的问题更多的是关于大型团队如何设法向所有贡献者提供工作,而不是git如何做事。
"而不是git如何处理事情"意味着你相信git不是大型团队的正确工具。相反......看看git来自哪里;它确实是一个非常好的工具,仅仅因为它是用大型团队和大型代码库编写的。
你引用的问题的答案有两个:
首先,git push
迫使你先行git pull
的事实是处理事情的一种非常明确的方法。永远不会有任何意外推动;总是推送(除非你指定-f
,可以禁用服务器端),或者用git语言指定"快进#34;。
二;大型团队通常的工作方式是通过功能分支;这意味着工作以小(ish)部分形式发布,每个部分都作为git
存储库中的单独分支存在。如果幸运的话,正常情况是每个分支机构仅由一个人开发。如果你确实必须在一个拥有多个开发人员的分支上工作,那么至少任何类型的冲突解决方案都只涉及开发人员总数的这一小部分。
答案 2 :(得分:1)
以下是diff算法的完整详细信息: git根据配置使用了diff2或diff3
对于一般知识,这里有diff2& amp;的规格。的diff3。
diff2:http://www.xmailserver.org/diff2.pdf
diff3:http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf