2016-11-10 62 views
0

考虑用下面的分支回购:合并犯下列为未合并的分支差异

​​

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在两个分支中,它们都被报告为未合并。此外,当我试图合并developmentmaster时,它将复制提交,一个提交原始提交哈希,另一个提交新提交哈希。

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

在此先感谢

+0

对于这种情况,如果我没有误读你的案例,它们必须是*不同*提交(通过ID)。试一下'git log --oneline --graph --decorate --left-right master ... development'(注意三点);可能会添加'--boundary'来获得显示的边界提交。这应该有助于更准确地定义问题,至少。 – torek

回答

0

虽然我不能完全肯定,为什么发生这种情况的原因,我对如何合并分支,而无需创建这些重复提交的想法。

解决方法是使用git cherry-pick。 Cherry-pick会将特定的提交重放到当前分支的提示上,而不考虑提交历史记录,但只有在提交可以适用于新分支时才会有效。(只要C D E的两个版本都具有相同的更改。

首先,确保你对你的主分支从那里,执行以下命令:。

$ git cherry-pick F G 

确保F和G是各自提交散列

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

如果您希望我们调试为什么这可能发生,那将是张贴的git log master..development结果是非常有用的,因为需要redacting的任何信息。