如何用Git变基到初始提交的前一个虚拟版本以合并所有提交?
合并所有提交为单个提交的方法
你提到用git rebase -i 123会至少保留两个提交,这是因为123是指定的基点,rebase仅处理该基点之后的提交,所以原有的123会被保留,加上合并后的提交,总共两个。
要把包括123在内的所有5次提交合并成一个,不需要所谓的“虚拟版本-1”,Git有更直接的实现方式:
方法一:用
--root参数执行交互式rebase
运行命令:git rebase -i --root打开的编辑界面会列出仓库的所有提交(从首次到最新)。将除第一行外的所有提交前缀从
pick改为squash(或fixup,后者会丢弃被合并提交的信息),保存退出后,所有提交就会合并为一个新的根提交。方法二:
git reset配合重新提交- 执行命令回到首次提交之前的空状态:
git reset --soft 123~1 - 重新提交所有更改:
git commit -m "合并所有提交的描述信息"
- 执行命令回到首次提交之前的空状态:
Git里并没有直接的-1虚拟版本号,但--root或123~1都能达到你需要的“指向首次提交之前”的效果。
内容的提问来源于stack exchange,提问作者Patrick Fromberg
相关产品推荐
相关产品推荐

