考虑一个包含以下分支的回购:
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中,并且我正在尝试找出尽可能保持干净的最佳方法。
提前致谢
答案 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
的结果非常有用,必要时会重新编辑任何信息。