[英]Git - How to squash selected commits?
我有以下 git 历史:
X --- X --- X --- X --- X feature_branch
/ /
X --- X --- X --- X develop
正如您在某些时候所看到的,develop 分支已合并到 feature_branch。 现在我想合并 feature_branch 来开发,我想在功能分支历史中只有两个提交:
我尝试使用git rebase -i develop但它没有显示合并开发到功能分支提交。
怎么做 ?
Edit1在git rebase -i HEAD~6 之后(6 因为在功能分支提交 3 之后合并是一个单独的提交,它在上图中稍微简化了一点)我有这样的事情:
pick 1efad76 feature commit1
pick bae14d6 feature commit2
pick 3de7c48 feature commit3
pick 01dbb6a develop commit3
pick 674b2aa develop commit4
pick db5d9be feature commit4
pick 9cbe436 feature commit5
合并提交可见为两个开发提交 - 开发 commit3 和开发 commit4。 如何放“s”来实现我的目标? 我应该以某种方式重新排序这些提交吗?
您应该能够通过执行以下操作来达到预期的结果:
git rebase -i HEAD~5
根据需要换出 5 个提交
从那里,您将能够进行fixup
,这将压缩提交,并丢弃提交的日志消息。
慢慢来,确保你阅读了 git 告诉你的内容,如果你犯了一个错误 - git reflog
已经涵盖了你 - 你可以reset
到历史中的任何一点并使用reflog
撤消许多事情 - 它让我出局之前的许多泡菜! 更多信息在这里
一旦您完成了交互式 rebase,并且您已经获得了您想要的提交历史记录,如果您完成了该功能,您可以继续进行快速合并开发(见下文) -或继续您的功能,直到准备就绪。
git checkout develop
git fetch
git pull
git merge --ff-only feature_branch
pull
将自动执行fetch
,但我个人偏好在pull
之前查看正在更新的内容。
注意:如果你提交了一个 pull-request,那么它会为你做一些这样的事情,或者如果它不能,就会警告你并告诉你该怎么做 ;)
如果您正在继续您的功能,并且develop
经常更新,那么最好让您的功能与开发保持同步。
你可以做一个git rebase origin/develop
或只是develop
- 但同样,我的偏好是与origin
- 我将首先fetch
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.