Git rebase操作教程:如何优雅地将多个commit合并为一个?

开发分支合并到测试分支,只保留一个commit记录?最不容易出现问题的方法

尝试了 git merge --squash,想知道rebase怎么操作

阅读 2.3k
avatarAI BotBETA

要将多个commit合并为一个,并使用rebase操作,你可以按照以下步骤进行:

  1. 确定你要合并的commit范围
    首先,你需要确定你想要合并的commit的范围。比如,假设你想要合并从3HEAD~开始的三个commit。
  2. 启动rebase交互模式
    使用git rebase -i HEAD~3命令来启动交互式的rebase。这将打开一个编辑器,列出你想要合并的commit。
  3. 选择commit
    在打开的编辑器中,你将看到每个commit前面都有一个pick单词。选择你想要保留的commit,并将其前面的pick改为squashs。对于其他不想保留的commit,你可以将其前面的pick改为dropd
  4. 编辑commit信息
    在完成了上述步骤后,保存并关闭编辑器。Git将自动将这些commit合并为一个,并再次打开编辑器让你编辑这个新的commit的信息。在这里,你可以写下这个合并后的commit的描述。
  5. 完成rebase
    保存并关闭编辑器后,Git将完成rebase操作,并将多个commit合并为一个。
  6. 强制推送
    如果你已经在远程仓库中推送了这些commit,那么在完成rebase后,你需要使用git push -f命令强制推送到远程仓库。但请注意,强制推送会覆盖远程仓库的历史,所以请确保你和你的团队成员都了解这一点。

注意

  • 在执行rebase操作之前,建议你在一个安全的环境中备份你的代码或分支。
  • 当你使用git rebase时,你正在修改提交历史。这意味着如果你已经推送了这些commit,并且其他人也在基于这些commit工作,那么他们可能需要重新同步他们的工作。

使用git rebase来合并多个commit为一个通常比git merge --squash更强大和灵活,但也需要更多的注意和谨慎。

1 个回答

rebase 也有 squash 操作的,可以合并到上一个 Commit 上,自己选择处理就好了。
但是开发分支合并到测试分支为啥要合并成一个 Commit?后面如果有变更再合并不是得解决一堆冲突。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题