git rebase -i HEAD~6 合并多个提交

场景

场景:有时候我们修改一个 Bug 或者一段代码的时候, commit 一次之后,发现 Bug 没改对或者这段代码需要再优化之类的,改完之后又 commit 了一次或多次,这样就会感觉提交历史不太美观(有点强迫症),这个时候我们就希望只想保留一次提交历史记录,合并为一个完整的提交,该怎么办呢?git rebase 应运而生!

步骤

查看历史,确定要合并的提交
git log

注意,不要合并了其他人的提交,不要合并了其他人的提交,不要合并了其他人的提交

合并命令

git rebase -i HEAD~6 或者 git rebase -i ***

*** 指的是你的某个提交

修改第 2~6 行的第一个单词 picksquash or s,然后 输入:wq or x 保存退出。

pick 的意思是要执行这个 commit
squash 的意识是这个 commit 会被合并到前一个 commit

中间可能会出现的情况
git 会压缩提交历史,若有冲突,需要进行修改,修改的时候保留最新的历史记录,修改完之后输入以下命令:

git add .
git rebase --continue

若想退出放弃此次压缩,执行命令:
git rebase --abort

若无冲突 or 冲突已 fix,则会出现一个 commit message 编辑页面,修改 commit message ,然后 输入:wq or x 保存退出。

同步到远程 git 仓库
输入:git push -f or git push --force
查看远程仓库效果,多次 commit 已被合并成一次 commit。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git飞行规则(Flight Rules) 前言 英文原版README 翻译可能存在错误或不标准的地方,欢迎大家指...
    骑摩托马斯阅读 1,646评论 0 8
  • Git提交历史的修改删除合并等实践(转)今天主要针对在项目版本控制器Git的使用中遇到的一些和提交历史操作相关的常...
    码农朱同学阅读 1,143评论 0 1
  • git 使用笔记 git原理: 文件(blob)对象,树(tree)对象,提交(commit)对象 tree对象 ...
    神刀阅读 3,801评论 0 10
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,924评论 0 9
  • 昨天在同事电脑上操作了一把cherry-pick代码,发现很多功能不用,就慢慢忘记了,梳理了下流程图: git c...
    gogoingmonkey阅读 696评论 0 0