合并提交在分支差异中列为未合并

时间:2016-11-10 19:14:44

标签: git

考虑一个包含以下分支的回购:

master: A-B-C-D-E

development: A-B-C-D-E-F-G

当我运行git log master..development --oneline时,我会收到以下内容:

C <hash> <commit message> 
D <hash> <commit message>
E <hash> <commit message>
F <hash> <commit message>
G <hash> <commit message>

因此即使C D E在两个分支中,它们也会被报告为未合并。此外,当我尝试将development合并到master时,它将复制提交,一个使用原始提交哈希,另一个使用新提交哈希。

我继承了存储库,我想知道可能导致这样一个问题的原因,如果我应该关注,以及最佳的行动方案是什么。我需要将新提交F G合并到master中,并且我正在尝试找出尽可能保持干净的最佳方法。

提前致谢

1 个答案:

答案 0 :(得分:0)

虽然我不完全确定发生这种情况的原因,但我知道如何在不创建这些重复提交的情况下合并分支。

解决方案是使用git cherry-pick。 Cherry-pick会将特定提交重放到当前分支的顶端而不考虑提交历史记录,但只有在提交可以干净地应用于新分支时才能正常工作(只要C D E的两个版本都应该很好有相同的变化。

首先,确保您在主分支上。从那里,执行以下命令:

$ git cherry-pick F G

确保F和G是相应的提交&#39;散列。

如果此命令失败,我愿意打赌C D E实际上并不是两个分支上的相同提交。

如果您希望我们调试为什么可能会发生这种情况,那么发布git log master..development的结果非常有用,必要时会重新编辑任何信息。