繁体   English   中英

重新设置 git 存储库以将多个提交合并为一个,但使用合并提交?

[英]Rebase a git repository to merge multiple commits into one, but with a merge commit?

这是我一直遇到的问题,可能是由于不良习惯造成的,但我一直无法找到解决方案。 基本上,假设我在一个特性分支上工作了一段时间,而且我的提交很草率,所以我有很多提交,而且我也参与了几次开发以跟上进度。 它可能看起来像这样:

#jfdaa My commit
#fkljd My Commit
#4kfdf Merge Commit
#43252 My Commit
#25525 My Commit

但我希望它看起来像这样:

#3953h Merge Commit
#fdsaf My Commit

有没有好的方法来做到这一点?

如果您的所有提交都在合并之后,则无需合并。

不要从开发中合并,而是将您的分支重新定位在开发之上。 然后根本没有合并提交。 历史是美好的和线性的,就好像你一直在努力发展一样。

      C - D - M - G - H [feature]
     /       /
A - B - E - F [develop]

git checkout feature
git rebase develop

              C1 - D1 - G1 - H1 [feature]
             /
A - B - E - F [develop]

这避免了许多没有价值的不必要的“更新”合并,它们只会使历史难以阅读。

您可以使用拉取(提取和合并),使用git pull --rebase进行变基,并始终merges pull.rebase

然后,您可以根据需要使用交互式 rebase 压缩和修复您的提交。

git rebase -i develop

按照弹出的编辑器中的说明进行操作。 有关更多信息,请参阅Pro Git 中的重写历史记录

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM