Git压制提交

使用Git进行协作开发时,因为各种外界不可抗因素(会心一笑😊),我们通常会在自己的开发分支进行多次commit后才合并到开发分支,对于追(jing)求(shen)优(jie)雅(pi)的我们👶来说一坨commit挤在SourceTree上简直让人有怒删dev的冲动有没有!!(好吧我承认并没有🈚️)

为了优雅的处理多次commit造成的视觉及心灵创伤🤕️(严肃起来😠),偶然寻觅到一种压缩本地commit的方法,可以将本地多个commit压缩为一个包含所有commit全部变更的单一commit(语法十分精炼需要多读几遍👏),最最理想的情况下每个feature应该只对应一次commit。

优点

  • 历史清晰 SourceTree优雅
  • 方便基友们(还有可爱的妹纸们👧) Code Review

Git压制提交

将多次本地commit压缩为一次commit(分支未推到远程仓库)

建议在分支未推到远程仓库时操作,如果已经推到远程仓库又必须必须必须必须必须要合并这些commit,可以先将远程分支删除(玩坏了不怪我咯)

煮个🌰:

  • 初始状态

SourceTree:

使用git log命令查看所有提交历史:

我们要将红框内的三条commit合并为一条commit,选中三条提交中最早的commit的父提交(⚠️就是这么绕口),获得它的commit_id值,如下图:

  • 衍合操作

命令格式: git rebase –i commit_id

commit_id为待合并提交中最早commit的父提交,上文已经获得。
commit_id: 唯一标识一次commit,是本次commit与Git仓中内容和头信息的一个校验和,使用git log或者在sourceTree中选中特定commit,右键选择"复制SHA1到剪切板"即可获得。
取commit_id前七八位即可(坚信地球上没有那么多Hash冲突👶)。

本例中为: git rebase -i 1c76461a21a8

  • 压制提交

pick:执行该commit
squash:将此版本的commit合并到前一个commit

定义如下⬇️

so, 将后两条提交前面的pick全部改为squash

使用:wq退出

使用:wq退出

vim操作:i 编辑 esc 退出编辑 :wq 退出

  • 回到SourceTree,三次commit已经被合并为一次提交。
  • 修改提交信息

我们得到了一个包含前三次提交的全部变更的单一提交,它包含了三次提交的所有说明信息。

如果需要修改说明信息⬇️(看你心情咯👶)

修改最近一次提交说明 git commit --amend

修改提交信息:

修改结束,:wq退出。

使用git log 查看:

大功告成🏃。

  • 参考链接

Git 工具 - 重写历史
Git Rebase 解析
交互式Rebase

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

推荐阅读更多精彩内容