zoukankan      html  css  js  c++  java
  • Git操作:多个commit合并,并修改提交信息

    写在前边

    写这篇文章主要是记录下,很久之前读《重构-改善既有代码的设计》时,看到过作者讲过Git可以实现多个细碎操作commit合并为一个有意义的提交,当时查过一些中文信息,写得不是很清晰。正巧有一个Git管理的脚本仓库需要大量修改,尝试践行下书中的内容:完成一小部分功能就作一次本地commit,直到完成修改后,合并成一个有意义的提交。

    这样做是有意义的,每一次小小的commit保证了工作进度不会因频繁的检查而效率低下(每一次提交之前仔细检查,提交后就无需再重复检查了,也有助于提升重构者的信心)。

    实验准备

    试验仓库中本地提交了5次,领先远端仓库。我们的目的是将这5次提交合并成一个commit,并且修改最终的提交信息。

    git log --pretty
    

    合并多个commit

    Git 命令:

    git rebase -i HEAD~5
    
    • 上边的数字5即合并的版本,之前看到提交信息 构建调整1~5 这五个提交。
    • Git 没有一个改变历史工具,但是可以使用变基来变基一系列提交,本文的合并请求就是用变基实现的。

    下图中是已经修改后的,之前这5次提交的前边都是pick,构建调整1 信息我修改成了一个有意义的提交,为了验证是否能同时合并commit与修改合并后的提交信息。

    按照默认顺序,可以将除第一个提交外,都使用 fixupsquash 进行标记,最终你将得到这些commit向上合并,最终变成一个,提交信息是 pick 标记的信息。

    这里只关注 picksquashfixup 这三个命令:

    • pick:使用此提交不做操作
    • squash:将指定的提交合并到上边的pick请求中,保留提交信息
    • fixup:与 squash 类似,但不保留提交信息

    保留提交信息是指将最终合并的提交信息包含所合并提交信息,我做了尝试如图:

    使用 :wq 保存修改后

    使用 git log --pretty 查看提交日志,可以看到commit已合并成了一个新的请示,但提交信息是 pick 标记的 commit 提交信息,说明pick标记的提交信息无法修改。

    合并多个请求的目标已经完成,接下来修改提交说明。

    修改最后一次提交说明

    Git 命令:

    git commit --amend
    

    执行命令,修改提交信息后,:wq 保存退出。

    git log --pretty 查看提交日志

    提交信息已经更新,上一步骤的合并多请求也已完成,推送到远端仓库就可以了。

    结尾

    通过本文的描述实践了合并多个commit并修改提交信息,感觉这个功能很好用,作为有一定代码洁癖的我,对提交日志也有一定洁癖,毕竟后续日子提交日志可以帮我们快速定位过去的修改。

    另外 git rebase 命令给了 editreword 本身也是调用了 git commit --amend 修改的提交信息。为了表示 pick 标记的提交信息不会修改,才做的验证。

    参考

    -END-
    本文同步于本人CSDN

  • 相关阅读:
    拍拍帐号信息查询PHP
    如何成为“一分钟经理人”?
    性能计数器注册表配置单元一致性失败(Performance counter registry hive consistency check failed )解决方案
    换个心境搞IT在IT职场如何打拼?
    变形金刚3 ——结尾擎天柱经典独白
    修改织梦(DEDE)的上一篇下一篇功能
    android 选择系统自带铃声和选择自定义铃声
    android开发常用方法
    输入特定年月返回该月的天数
    “心”字诀
  • 原文地址:https://www.cnblogs.com/hellxz/p/14410657.html
Copyright © 2011-2022 走看看