Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免每次在git中提取文件时选择版本?_Git_Pull - Fatal编程技术网

如何避免每次在git中提取文件时选择版本?

如何避免每次在git中提取文件时选择版本?,git,pull,Git,Pull,让我们考虑一下这个场景:我们是一个由4名开发人员组成的团队。我们正在一个已经存在的项目中工作,我们需要创建新功能。 对于新功能,没有问题。我们必须选择谁将工作在它和拉更新后,它将顺利完成,因为它将是所有开发人员的新文件 但是我们中的一个假设程序员-1,将只处理已经存在的代码中的一些问题。所以这意味着他将在本地git中进行更改,然后推送到中央存储库 好吧,假设程序员1花了一整天的时间,对50个文件做了100个小改动。他添加、提交并推送到中央存储库。在那之后,程序员2将拉取所有更改,但他可能会有这样

让我们考虑一下这个场景:我们是一个由4名开发人员组成的团队。我们正在一个已经存在的项目中工作,我们需要创建新功能。 对于新功能,没有问题。我们必须选择谁将工作在它和拉更新后,它将顺利完成,因为它将是所有开发人员的新文件

但是我们中的一个假设程序员-1,将只处理已经存在的代码中的一些问题。所以这意味着他将在本地git中进行更改,然后推送到中央存储库

好吧,假设程序员1花了一整天的时间,对50个文件做了100个小改动。他添加、提交并推送到中央存储库。在那之后,程序员2将拉取所有更改,但他可能会有这样一条消息:

On branch master
You have unmerged paths.
...
...
因此,程序员2需要花费大量时间来遍历所有50个文件并选择程序员1所做的更改。程序员3和4也一样

那么,有没有一种方法可以让git接受拉取过程中的所有更改,而不要求我们决定应该保留哪些更改?我们将接受程序员-1每次的更改


我发现了这一点,但它没有正确地解决问题。

如前所述,如果不存在冲突,Git实际上将处理大多数合并案例。它唯一不会这样做的时候是它不知道如何解决冲突

这看起来不一定是Git的问题,而是一个过程问题。开发人员似乎正在对代码库进行彻底的更改,这应该更清楚地传达给每个人,以了解这会产生什么影响。无论是这样,还是那些改变的范围都需要缩小,因为这对你的工作有着不利的影响

然而,如果您确信您将始终接受他们的更改,那么您可以考虑合并他们的工作并接受他们的工作

git fetch
git merge origin/branch --theirs
…或者您可以将他们的工作与您的(在本文中是我们的)工作进行对比:


有关更多上下文,请查看相关文档。

除非更改冲突,否则这是默认行为。那意味着你做错了什么。Git总是可以将更改合并到不同的文件中,并且经常在同一文件的不同行上进行更改,但是它不能将更改合并到同一文件的相同行中。在我所处的场景中,我们总是会有冲突,因为项目已经完成,我们中的一个人将负责更改已经存在的代码。因此,每次其他人拉动时,我们都会发生冲突,因为代码已经更改。正如我所说的,更改已经存在的代码没有问题。自动合并已经由GIT处理,如果它能够被合并的话。问题是,不知何故,您正在进行无法自动合并的更改,例如两次提交更改了相同文件的相同行。冲突是两个人以两种不同的方式更改了相同的代码行,因此git无法确定要选择哪一种更改。一个人更改代码不会导致冲突。看起来你们都在同一个分支(主分支?)工作。您应该为不相关的工作创建单独的分支。
git fetch
git rebase --ours origin/branch