Git 飞行指南

重写历史 (opens new window)

0. 修改编辑器

在开始之前修改编辑器为 vim,否则会选用系统默认的,比如 nano(完全不会用 😢)。

cat .git/config # 查看配置
git config core.editor vim
cat .git/config # 验证
1
2
3

1. 修改最新 commit 信息

git commit --amend
1

2. 修改之前 commit 信息

git log # 获取 hash
# hash 值为对应元素的父元素的hash
git rebase -i hash
# 找到要修改的 commit(即第一行 commit)
# 将 pick 修改为 r,保存退出
# 自动切换至修改 commit 信息界面,修改即可

git log # 验证

1
2
3
4
5
6
7
8
9

3. 合并多个 commit 信息

git log # 获取 hash
# hash 值为对应元素最后一个的父元素的hash
# 个人的理解是,你改变了信息后就无法证明自己是自己,需要介绍父级节点来证明自己
git rebase -i hash
# 找到要修改的 commit
# 即保留第一行 commit,修改下面行至你期望的目标行
# 将 pick 修改为 s,保存退出
# 自动切换至修改 commit 信息界面,修改即可

git log # 验证
1
2
3
4
5
6
7
8
9
10

当然还有更简单一些的方法:

git log # 获取 hash
# hash 值为对应元素最后一个的父元素的hash
git reset --soft 3bc965a619447a75375aba # hash 也可以更为暴力的改为 master(对应分支名,一般是以 feature/bugfix 创建分支,所以该行为简单粗暴)

git commit -am "更简单的方法" # -am 对已跟踪的文件提交信息,不会影响尚未 add 的文件
git log # 验证
1
2
3
4
5
6
最后更新时间: 1 年前