我有一些重要文件在解决git冲突和执行git merge时被删除了。当我说删除时,我的意思是它们仍然存在于早期的提交中,但是它们的更改在以后的提交中被覆盖。下图是我的git repo的可视化,由SourceTree提供。
我想要保留的文件在以红色圈出的git提交时被删除。包含已删除文件的提交位于PINK颜色中间的分支(蓝色和绿色圆圈之间),以绿色圈出的提交是当粉红色轮廓首先与最左边的分支合并时。
以下是我想知道答案的问题:
为什么PINK提交中添加的文件会在RED中圈出的提交中被删除?
如何从RED中圈出的提交下面的提交中获取这些文件和更改?
答案 0 :(得分:1)
这是我对发生的事情的最佳猜测。在绿色圆圈合并中,存在冲突,这阻止了通常发生拉动的自动合并和提交。开发人员注意到他自己没有改变的文件的一些本地更改,因此他放弃了这些更改(这些更改最终丢失)。在红色合并中,git看到这些更改在绿色合并中被删除,因此将这些删除传播到合并提交。
这是棘手的部分;有几种方法可以解决它,但所有这些方法最终都会让你手动挑选一些提交。我无法在屏幕截图的上方和下方看到每个分支上有多少次提交,因此我假设您将重新执行粉红色提交。对于每个粉红色提交ABC,请git cherry-pick ABC
。这将重播这些提交到分支,带回您的更改。