如果本地文件和远程文件之间存在差异,为什么拉总不会总是引起冲突?

时间:2019-11-29 12:42:52

标签: git github

假设github上有两个合作者,一个存储库user1和user2。

假设此时两个用户共享文件的条件完全相同。

然后,user1在本地对文件进行更改,然后:git add file.txt然后git commit -m'some comment here'然后git push。现在,文件也在github仓库上更新。

然后,user2执行:git pull。为user2下载(本地更新)文件,没有任何冲突。为什么没有冲突?

我希望在每个pull之后,如果本地文件和远程文件之间存在差异,则应该发生冲突。我误会了什么?

1 个答案:

答案 0 :(得分:1)

您正在混淆“差异”和“冲突”。

冲突是差异的一部分。

一些差异非常简单,以至于git可以假定要做的事情。添加一个文件,在现有文件中添加一行,删除一些块。好吧。

另一方面,当双方都偏离了上一个共同状态时,就会发生冲突。

让我们想象一个带有file.txt的仓库,它在提交B时包含以下文本:

Here is the first line.
Here is the second.
And my uncle is evil.

我们假设简单的历史

A---B---C <<< branch1
     \
      D <<< branch2

在这里,如果提交Cfile.txt的第一行修改为

Here are the first words.

但是在D中,假设对同一行进行了不同的修改

Here is the first line. And some words.

然后git无法确定要采用哪个版本(或两者兼而有之),因此它会中断其操作并让您手动进行处理,以使用户可以控制最终结果。


因此,返回到您的特定问题和pull命令,在大多数工作流程中很少见,因为通过pull定期更新的稳定分支很少直接直接提交,而是从功能分支中合并而成。 / p>