我创建了一个虚拟文本文件,并在每次提交时输入新行,例如:: //dummy.txt first commit second commit third commit 现在我想通过撤销第二次提交来删除第二行。然而在这个简单实验中,我遇到了合并冲突。有人能解释一下为什么吗?
你的例子并不像你想象的那么简单,因为你所做的更改都在连续的行上。主要问题在于第三次提交引入的差异实际上取决于第二次提交所做的更改。Git存储每个提交的完整树,但仍需要能够按照先前的提交来表达提交的差异(不知道这对你是否有意义)。 如果您尝试通过对同一文件的不同部分进行三次提交来执行相同的操作,则第二次提交的还原将不会失败。由于默认上下文差异为3,因此如果您的编辑距离彼此超过3行,它不应该失败。