【发布时间】:2015-08-23 04:33:51
【问题描述】:
我创建了一个虚拟 txt 文件并在每次提交中输入一个新行 如:
//dummy.txt
first commit
second commit
third commit
现在我想通过还原第二次提交来摆脱第二行。但是,我在这个简单的实验中收到了合并冲突。有人能解释一下原因吗?
【问题讨论】:
我创建了一个虚拟 txt 文件并在每次提交中输入一个新行 如:
//dummy.txt
first commit
second commit
third commit
现在我想通过还原第二次提交来摆脱第二行。但是,我在这个简单的实验中收到了合并冲突。有人能解释一下原因吗?
【问题讨论】:
您的示例实际上并不像您想象的那么简单,因为您的更改都在连续的行上。主要问题是third commit 引入的差异实际上取决于second commit 中所做的更改。 Git 会存储每个提交的完整树,但仍需要能够将提交表示为与上一次提交的差异(不知道这对您是否有意义)。
如果您尝试相同的操作,但通过执行 3 次提交修改同一文件的不同部分,则第二次提交的还原不会失败。由于默认上下文差异为 3,因此如果您的编辑彼此相距超过 3 行,它应该不会失败。
【讨论】: