git如何管理冲突的差异?

git如何管理冲突的差异?,git,Git,例如,假设两个用户获取同一版本的项目。两个用户编写相同的函数,但方式不同。用户A提交他们的工作并推送到主分支。然后用户B提交并尝试推送到主分支。会不会有问题,因为现在有两个版本的相同功能 如果这是一个模糊或愚蠢的问题,请原谅,因为我根本不知道如何使用版本控制(git是我的第一个版本)。以下是有关diff算法的完整详细信息: git根据配置使用diff2或diff3 有关一般知识,请参阅diff2和diff3的规范 差异2: diff3:首先,用户A和用户B必须各自拥有自己的存储库。因为它们是协同

例如,假设两个用户获取同一版本的项目。两个用户编写相同的函数,但方式不同。用户A提交他们的工作并推送到主分支。然后用户B提交并尝试推送到主分支。会不会有问题,因为现在有两个版本的相同功能


如果这是一个模糊或愚蠢的问题,请原谅,因为我根本不知道如何使用版本控制(git是我的第一个版本)。

以下是有关diff算法的完整详细信息: git根据配置使用diff2或diff3

有关一般知识,请参阅diff2和diff3的规范

差异2:

diff3:

首先,用户A和用户B必须各自拥有自己的存储库。因为它们是协同工作的,所以它们还可以在某个共享位置拥有一个中央存储库,以便共享更改。(或者,他们可以直接从彼此的存储库中推拉。)当用户B尝试推送他的更改时,git将不允许。他需要首先执行合并并手动解决任何冲突

我想我的问题更多的是关于大型团队如何将工作分发给所有贡献者,而不是git如何做事情

“而不是git是如何做事的”意味着您认为git不是大型团队的正确工具。相反地。。。看看git来自哪里;这正是一个非常好的工具,因为它是在大型团队和大型代码库的基础上编写的

您所引用问题的答案有两个:

首先,
gitpush
迫使您首先执行
gitpull
这一事实是一种非常明确的处理方式。永远不会有任何意外的推动;推送总是(除非您指定了
-f
,可以在服务器端禁用),或者在git语言中是“快进”


第二;大型团队通常的工作方式是通过特征分支;这意味着工作是以小块(ish)的形式分发的,每个小块作为一个单独的分支存在于
git
存储库中。如果幸运的话,通常情况下,每个分支只由一个人开发。如果您确实必须与多个开发人员一起处理一个分支,那么至少任何类型的冲突解决都只涉及开发人员总数的一小部分。

很有用,但不是有一个简单的解释吗?如果有冲突会损失一些工作吗?嗯,好的,谢谢。我想我的问题更多的是关于大型团队如何将工作分发给所有贡献者,而不是git如何做事情。这是对这个问题的一个很好的回答,所以我会接受它。@约翰路易根,你可以考虑发布一个关于软件工程的问题。@ JohnLeuenhagen:我已经问了好几个不同的人这个问题。我似乎得到的最好的答案是“不要让两个人同时在同一个班级工作。”@RobertHarvey,当然,这使问题变得微不足道。我认为,只要有清晰的沟通,让人们在同一代码单元上并行工作就没有问题。人们确实有各自的存储库,毕竟,不管发生什么,他们都可以保持干净的开发过程(例如,经常提交,等等)。希望有一个共同的问题跟踪者来了解实际需要做什么。问题只能在合并期间发生,然后有问题的开发人员就有希望解决它了@阿诺:嗯。为什么两个人会同时在同一行代码上工作?(大多数合并实用程序,包括Git,都应该自动合并彼此无关的行)。合并冲突的发生完全是一个计划问题,而不是Git问题(总的来说,合并很糟糕)。