Git 在合并时删除了一些文件

Git deleted some files on merge

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

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

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

  1. 为什么添加到粉红色提交中的那些文件在红色圈出的提交中被删除?

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

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

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