美文网首页
Git压制提交

Git压制提交

作者: Jimmy_gjf | 来源:发表于2016-09-20 20:12 被阅读560次

    使用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

    相关文章

      网友评论

          本文标题:Git压制提交

          本文链接:https://www.haomeiwen.com/subject/qtvoettx.html