简述

修改某个历史 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. python 基础 day3
  2. 韶音耳机连不上电脑_骨传导耳机哪个牌子好,骨传导耳机推荐
  3. tidevice安装(MacOS)
  4. python语言程序设计2019版第二章课后答案-《python语言程序设计》_第二章编程题...
  5. 全球及中国膀胱癌药物行业“十四五”专项规划及市场调研分析报告2021-2027年
  6. Linux字符设备驱动框架
  7. centos下网络配置方法(网关、dns、ip地址配置)
  8. 36日期计算包含计算某月某日是星期几的公式
  9. 排序算法(1)----选择排序算法
  10. mem考试能用计算机吗,东华大学计算机学院MEM难考吗
  11. JAVA网络编程-TCP客户端与服务器端连接
  12. 最新北京市生活常用电话一览表
  13. EDIUS 9 PRO(视频编辑软件)
  14. matlab找零钱,自动售货系统
  15. java io 呕心沥血的学习 学了就忘
  16. “创新雷神号”卫星成功发射,华为云分布式云原生“天地一体”首次组网成功
  17. 优秀网页设计:20个国外大学网站设计欣赏
  18. CAAI名誉理事长李德毅院士谈机器的生命观
  19. 虚拟机下 ubuntu 显示屏幕太小问题
  20. MySQL 生成随机数字、字符串、日期、验证码以及 UUID

热门文章

  1. 巧用邮件营销技巧获客
  2. java数组越界异常并捕获_(Java)数组越界异常
  3. 2021-2027全球与中国高密度聚乙烯薄膜市场现状及未来发展趋势
  4. Windows用于控制 TCP 确认 (ACK)行为的注册表项 -TcpAckFrequency
  5. 发光字导向标识的发展
  6. montreal英文音素级别强制对齐
  7. c语言bmp图像均衡化,浅谈应用C语言实现图象灰度的均衡化问题
  8. 代码分析understand
  9. c语言截取屏幕,全屏截取?
  10. 定量分析protein A杂质丨艾美捷Protein A残留检测试剂盒方案