多个commit合并成一个(Git 交互式变基(rebase))
Git 交互式变基(rebase),将多个提交合并成一个提交。
Git 交互式 Rebase 操作:合并多个提交
-
启动交互式变基:
git rebase -i HEAD~n-
HEAD~n表示从当前的HEAD向上回溯n个提交。比如,HEAD~3会回溯 3 次提交。 -
执行这个命令后,Git 会打开一个编辑器,列出你要变基的
n个提交。
-
-
进入编辑模式并选择要操作的提交:
-
在编辑器中,Git 会显示类似以下的内容:
pick abc123 Commit message 1 pick def456 Commit message 2 pick ghi789 Commit message 3 -
你要做的是,修改除了第一个提交外的所有
pick为squash,这样可以将这些提交合并到第一个提交中:pick abc123 Commit message 1 squash def456 Commit message 2 squash ghi789 Commit message 3 -
pick表示保留该提交,squash表示将该提交合并到上一个提交。
-
-
保存并退出编辑器:
-
按下
i进入编辑模式:如果你是使用 Vim 编辑器,可以按i进入插入模式,进行修改。 -
修改完毕后按
Esc退出插入模式:按下Esc键进入命令模式。 -
保存并退出 Vim 编辑器:
-
输入
:wq,然后按Enter键保存文件并退出。
-
-
如果
Esc无法退出,可以按Ctrl+C强制退出。
-
-
编辑提交信息:
-
退出后,Git 会自动开始执行变基操作,接着会弹出一个新的编辑器,要求你合并提交信息。
-
你会看到类似以下内容:
# This is a combination of 3 commits. # The first commit's message is: Commit message 1 # The 2nd commit's message is: Commit message 2 # The 3rd commit's message is: Commit message 3 -
在这里,你可以删除不必要的提交信息,保留你想要的提交信息。通常,你会保留第一个提交的消息,然后删除后面合并的提交信息。
例如:
Commit message 1
-
-
保存并退出编辑器:
-
同样地,按
Esc键退出插入模式,输入:wq保存并退出编辑器。
-
-
强制推送到远程仓库:
-
完成上述步骤后,Git 已经成功地将多个提交合并成了一个提交。接下来你需要将更新后的历史推送到远程仓库。
-
注意: 由于你修改了历史提交,所以你需要使用
--force或-f强制推送:git push --force -
使用
--force会覆盖远程仓库的历史记录,因此请确保你理解这种操作的影响,尤其是在协作项目中。
-
总结:
- git rebase -i HEAD~5
- 键盘点击i进入编辑模式 将除了第一条外的其他pick改成squash 然后esc+:wq退出
- i 删除不必要的提交信息 esc :wq
- 最后强制提交:git push --force
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)