假设github上有两个合作者,一个存储库user1和user2。
假设此时两个用户共享文件的条件完全相同。
然后,user1在本地对文件进行更改,然后:git add file.txt
然后git commit -m'some comment here'
然后git push
。现在,文件也在github仓库上更新。
然后,user2执行:git pull
。为user2下载(本地更新)文件,没有任何冲突。为什么没有冲突?
我希望在每个pull
之后,如果本地文件和远程文件之间存在差异,则应该发生冲突。我误会了什么?
答案 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
在这里,如果提交C
将file.txt
的第一行修改为
Here are the first words.
但是在D
中,假设对同一行进行了不同的修改
Here is the first line. And some words.
然后git无法确定要采用哪个版本(或两者兼而有之),因此它会中断其操作并让您手动进行处理,以使用户可以控制最终结果。
因此,返回到您的特定问题和pull
命令,在大多数工作流程中很少见,因为通过pull定期更新的稳定分支很少直接直接提交,而是从功能分支中合并而成。 / p>