Git删除了合并

时间:2015-06-24 17:05:25

标签: git version-control git-merge

我有一些重要文件在解决git冲突和执行git merge时被删除了。当我说删除时,我的意思是它们仍然存在于早期的提交中,但是它们的更改在以后的提交中被覆盖。下图是我的git repo的可视化,由SourceTree提供。

A visualization of my git branches

我想要保留的文件在以红色圈出的git提交时被删除。包含已删除文件的提交位于PINK颜色中间的分支(蓝色和绿色圆圈之间),以绿色圈出的提交是当粉红色轮廓首先与最左边的分支合并时。

以下是我想知道答案的问题:

  1. 为什么PINK提交中添加的文件会在RED中圈出的提交中被删除?

  2. 如何从RED中圈出的提交下面的提交中获取这些文件和更改?

1 个答案:

答案 0 :(得分:1)

  1. 这是我对发生的事情的最佳猜测。在绿色圆圈合并中,存在冲突,这阻止了通常发生拉动的自动合并和提交。开发人员注意到他自己没有改变的文件的一些本地更改,因此他放弃了这些更改(这些更改最终丢失)。在红色合并中,git看到这些更改在绿色合并中被删除,因此将这些删除传播到合并提交。

  2. 这是棘手的部分;有几种方法可以解决它,但所有这些方法最终都会让你手动挑选一些提交。我无法在屏幕截图的上方和下方看到每个分支上有多少次提交,因此我假设您将重新执行粉红色提交。对于每个粉红色提交ABC,请git cherry-pick ABC。这将重播这些提交到分支,带回您的更改。