使用git commit --amend可以简单的修改前一条记录,但是不能修改前面第 N 次提交记录,这个时候使用git commit --fixup可以修改前面的提交第 N 次记录。

使用方法

例如,要对Fix article page上的提交进行额外修改。

❯ git log --oneline
1131338365 (HEAD -> edit_article_page) Fix settings page
9c57cb3e7a Fix article page
ab6a6bef9d Add column
cgbaeef9d3 (master) Initial commit

提交的时候,使用--fixup <参数>

参数:提交的哈希值

❯ git add .
❯ git commit --fixup 9c57cb3e7a

日志显示如下:

❯ git log --oneline
26a2dc16a8 (HEAD -> edit_article_page) fixup! Fix article page
1131338365 Fix settings page
9c57cb3e7a Fix article page
ab6a6bef9d Add column
cgbaeef9d3 (origin/master, master) Initial commit

最后,执行git rebase -i --autosquash <参数>~

Autosquash 会合并 fixup ! 开头的提交。

参数:提交的哈希值

~:如果加了~,参数设置为需要修改的提交(9c57cb3e7a), 如果不加~,参数设置为需要修改的上一次提交(ab6a6bef9d)。



```bash
❯ git rebase -i --autosquash 9c57cb3e7a~
pick ab6a6bef9d Add column
pick 9c57cb3e7a Fix article page
fixup 26a2dc16a8 fixup! Fix article page
pick 1131338365 Fix settings page

# Rebase 671ca6fcee..f235308862 onto 671ca6fcee (4 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous

保存编辑器后,看到如下的结果:

❯ git log --oneline
1131338365 (HEAD -> edit_article_page) Fix settings page
9c5a2d3e7a Fix article page
ab6a6bef9d Add column
cgbaeef9d3 (origin/master, master) Initial commit

标签: 技巧 GitHub
⇠ 谷爱凌称中国人人都可以下载VPN引发争议 各大平台公开显示IP归属地,IP代理产业爆火 ⇢

GFW VPN

提供vpn服务,针对中国互联网用户,完全可以突破GFW的封锁. 经过了长期测试,运行非常的稳定.

Send Mail

注册账号