简述

修改某个历史 commit, 而不破坏其他 commits. 可参考如下做法:

参考做法

以如下 git log 为例,修改 de09c7e 该 commit :

... // latest commit
...
commit de09c7e0768026ba700c8c52a3eb8dafdb79bbe6
Author: xxx
Date:   Tue Nov 10 15:42:26 2020 +0800feat: xxxcommit ff3380b6ed6669859fc02fd4c55e381ea7ce0c1f
Author: xxx
Date:   Tue Nov 10 15:37:40 2020 +0800fix: xxx
...
... // older commit
  1. 本地针对 commit: de09c7e 修改好

  2. 提交修改到本地仓库

    git add .
    git commit --fixup=de09c7e0768026ba700c8c52a3eb8dafdb79bbe6
    

    这样本地会多出一个 !fixup 开头的 commit.

    --fixup= 后也可以接 HEAD~n, HEAD^n, commidID 等, 即:

    git commit --fixup=HEAD~n
    git commit --fixup=HEAD^n
    git commit --fixup=commitID
    

    commitID 可以只选前 6 位

  3. 完成对 fixup 的 commit 的 rebase

    git rebase -i --autosquash ff3380b6ed6669859fc02fd4c55e381ea7ce0c1f
    # git rebase -i --autosquash 命令中的 commitID 不应是需要 fixup 的 commit, 而是需要比 fixup 更老的 commit。
    

    git rebase -i --autosquash 后也可以接 HEAD~n, HEAD^n, commidID 等, 即:

    git rebase -i --autosquash HEAD~n
    git rebase -i --autosquash HEAD^n
    git rebase -i --autosquash commitID
    

    commitID 可以只选前 6 位

  4. (CTRL+X) 保存即可

(可选) 后续

为了简化后续 rebase, 可配置全局的 rebase.autosquash

git config --global rebase.autosquash true

这样在本地 ~/.gitconfig 文件中会多出如下内容:

[rebase]autosquash = true

也可以手动修改 ~/.gitconfig 文件

这样之后如下的操作:

git rebase -i --autosquash HEAD~n

均可以替换为:

git rebase -i HEAD~n

git (fixup+rebase) 修改某个历史 commit相关推荐

  1. 三分钟教你学Git(二十七) - 修改多个commit

    比如我们又一个历史提交A->B->C->D, 当前HEAD在D commit上,我们想要修改B,C commits,该怎么做呢? 我们知道用git commit --amend可以修 ...

  2. git如何清空历史commit?

    背景 因为之前做笔记都是在github上面,时间久了之后,commit的次数会很多,仓库的体积越来越大,这就导致每次需要clone的时候,需要等待很久才可以clone成功,花费了不少时间. 或者是当f ...

  3. 使用git_blame定位修改代码历史

    使用git blame定位修改代码历史 git blame定义 git-blame - Show what revision and author last modified each line of ...

  4. 基于Git rebase修改历史提交信息

    说明 关于为什么要修改历史提交的作者信息和提交信息,我就不多说了,也许是项目规范要求,也许是自己强迫症,总之是有这样的需求. 开始之前先说明一下: 本文介绍的方法只适用于本地仓库,提交到远程以后,我没 ...

  5. Git如何进行减少提交历史数量以及修改自己的commit中的邮箱

    Git如何进行减少提交历史数量以及修改自己的commit中的邮箱 注:本节中内容来自 https://git-scm.com/book/zh/v2/Git-工具-重写历史 最终解释权归该页面编撰者所有 ...

  6. Git代码合并之使用 rebase 整理提交历史

    Git 中整合来自不同分支的修改有两种方式:git merge 和 git rebase.本文主要介绍 rebase 的3种使用场景: 场景1: 使用 rebase 合并分支--整合分叉的提交历史 使 ...

  7. Git 修改已提交 commit 的信息

    背景 由于 Github 和公司 Git 使用账号不一样,偶尔没注意,提交出错后就需要修改 commit 信息. 修改最后一次提交 commit 的信息 # 修改最近提交的 commit 信息 $ g ...

  8. git 批量提交修改文件_Git批量修改提交历史

    有些时候我们可能需要批量修改提交历史,当然了,最近一次的提交历史很简单我们可以利用 git commit --amend 来进行最近一次提交的修改,如果你此时想要更新作者提交时间等也可以在amend之 ...

  9. Git小技巧——修改commit的注释内容——一看就会

    在使用git提交commit时需要对本次代码改动进行简要的注释.但有时候需要这些注释进行修改.现在展示2种操作方式: 1.idea版 选择version control,然后选择log,之后选择想修改 ...

最新文章

  1. 如何解决Beyond Compare内容相同仍然标示红色
  2. CentOS Linux 系统命令之rmdir命令
  3. mysql hex 和 c_什么是MySQL HEX()函数,它与CONV()函数有何不同?
  4. linux系统安装升级win10双系统,Win10 安装Linux ubuntu-18.04双系统(安装指南)
  5. NKOJ2317 英语四六级考试
  6. 系统常用 Intent 合集
  7. 首次公开专利并且专利数量最多公司(2022.07.25-2022.7.31)
  8. 一个程序的自我修养「GitHub 热点速览 v.22.19」
  9. 计算机网络(第八版) 谢希仁——知识点
  10. 第23个520情人节,女程序猿送男朋友什么?
  11. 户外移动电源:华宝新能、EcoFlow上演“龙虎斗”
  12. 定投复利公式 php,基金定投收益计算公式和复利计算公式
  13. packet tracer 学习ARP报文请求
  14. 彩虹7色的RGB及CMYK值列表参考
  15. win10开始菜单打不开_windows10系统电脑开始菜单无法打开的解决教程
  16. 输入N,求N以内(包括N)的质数之和
  17. Linux基础命令入门
  18. 微软官方原版win7(64位/32位)旗舰版系统下载
  19. 成功销售员应该具备的10大素质(上)
  20. FX3U_定位控制_硬件连接

热门文章

  1. vb CommonDialog 属性
  2. 回忆那年那月(1997~2003)起篇---高复班的残余
  3. 联想电脑服务器未能登录,联想电脑输入开机密码后显示group policy client 服务未能登录,拒绝访问是为什么?...
  4. SystemUI快捷设置栏----横竖屏一行显示个数(2)
  5. 计算机专业范文推荐信,计算机专业留学推荐信范文
  6. CTEX安装教程与注意事项
  7. UltraEdit的免费激活方法
  8. ddr3ip核心_DDR3(2):IP核初始化
  9. 《思想道德修养与法律基础》总练习题及答案
  10. CC2530定时器时钟周期 频率 分频 计时器计时时长理解