git (fixup+rebase) 修改某个历史 commit
简述
修改某个历史 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
本地针对 commit:
de09c7e
修改好提交修改到本地仓库
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 位
完成对 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 位
(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相关推荐
- 三分钟教你学Git(二十七) - 修改多个commit
比如我们又一个历史提交A->B->C->D, 当前HEAD在D commit上,我们想要修改B,C commits,该怎么做呢? 我们知道用git commit --amend可以修 ...
- git如何清空历史commit?
背景 因为之前做笔记都是在github上面,时间久了之后,commit的次数会很多,仓库的体积越来越大,这就导致每次需要clone的时候,需要等待很久才可以clone成功,花费了不少时间. 或者是当f ...
- 使用git_blame定位修改代码历史
使用git blame定位修改代码历史 git blame定义 git-blame - Show what revision and author last modified each line of ...
- 基于Git rebase修改历史提交信息
说明 关于为什么要修改历史提交的作者信息和提交信息,我就不多说了,也许是项目规范要求,也许是自己强迫症,总之是有这样的需求. 开始之前先说明一下: 本文介绍的方法只适用于本地仓库,提交到远程以后,我没 ...
- Git如何进行减少提交历史数量以及修改自己的commit中的邮箱
Git如何进行减少提交历史数量以及修改自己的commit中的邮箱 注:本节中内容来自 https://git-scm.com/book/zh/v2/Git-工具-重写历史 最终解释权归该页面编撰者所有 ...
- Git代码合并之使用 rebase 整理提交历史
Git 中整合来自不同分支的修改有两种方式:git merge 和 git rebase.本文主要介绍 rebase 的3种使用场景: 场景1: 使用 rebase 合并分支--整合分叉的提交历史 使 ...
- Git 修改已提交 commit 的信息
背景 由于 Github 和公司 Git 使用账号不一样,偶尔没注意,提交出错后就需要修改 commit 信息. 修改最后一次提交 commit 的信息 # 修改最近提交的 commit 信息 $ g ...
- git 批量提交修改文件_Git批量修改提交历史
有些时候我们可能需要批量修改提交历史,当然了,最近一次的提交历史很简单我们可以利用 git commit --amend 来进行最近一次提交的修改,如果你此时想要更新作者提交时间等也可以在amend之 ...
- Git小技巧——修改commit的注释内容——一看就会
在使用git提交commit时需要对本次代码改动进行简要的注释.但有时候需要这些注释进行修改.现在展示2种操作方式: 1.idea版 选择version control,然后选择log,之后选择想修改 ...
最新文章
- python 基础 day3
- 韶音耳机连不上电脑_骨传导耳机哪个牌子好,骨传导耳机推荐
- tidevice安装(MacOS)
- python语言程序设计2019版第二章课后答案-《python语言程序设计》_第二章编程题...
- 全球及中国膀胱癌药物行业“十四五”专项规划及市场调研分析报告2021-2027年
- Linux字符设备驱动框架
- centos下网络配置方法(网关、dns、ip地址配置)
- 36日期计算包含计算某月某日是星期几的公式
- 排序算法(1)----选择排序算法
- mem考试能用计算机吗,东华大学计算机学院MEM难考吗
- JAVA网络编程-TCP客户端与服务器端连接
- 最新北京市生活常用电话一览表
- EDIUS 9 PRO(视频编辑软件)
- matlab找零钱,自动售货系统
- java io 呕心沥血的学习 学了就忘
- “创新雷神号”卫星成功发射,华为云分布式云原生“天地一体”首次组网成功
- 优秀网页设计:20个国外大学网站设计欣赏
- CAAI名誉理事长李德毅院士谈机器的生命观
- 虚拟机下 ubuntu 显示屏幕太小问题
- MySQL 生成随机数字、字符串、日期、验证码以及 UUID