git rebase -i
操作指令 | 含义 | Git 信息(引入年份 / 最低版本) |
---|
pick (p) | 保留某个提交原样不变 | 2007 / Git v1.5.4 |
drop (d) | 删除该提交 | 2007 / Git v1.5.4 |
reword (r) | 修改提交信息 | 2007 / Git v1.5.4 |
edit (e) | 修改提交内容(可暂停 rebase 来修改) | 2007 / Git v1.5.4 |
squash (s) | 合并到前一个提交(保留提交信息),清理历史但仍保留有意义的提交说明 | 2007 / Git v1.5.4 |
fixup (f) | 合并到前一个提交(丢弃当前提交信息),快速合并临时提交不保留提交信息(如 WIP、update) | 2008 / Git v1.6.2 |
drop
a1c019c (HEAD -> dev) update
ddd538d update
be04f1b update
⚠️c2812c1 update 📝基准
$ git rebase -i HEAD~3
// 弹出文件
drop be04f1b update ✍️删除
drop ddd538d update ✍️删除
drop a1c019c update ✍️删除
⚠️c2812c1 (HEAD -> dev) update 📝基准
pick ,reword
a1c019c (HEAD -> dev) update
ddd538d update
be04f1b update
⚠️c2812c1 update 📝基准
$ git rebase -i HEAD~3
// 弹出文件
pick be04f1b update ✍️保持不变
reword ddd538d update ✍️修改提交信息
pick a1c019c update ✍️保持不变
85f8de7 (HEAD -> dev) update 🧠内容不变,sha改变
87553e0 update-reword-修改 commit msg 🧠提交信息被修改,sha改变
be04f1b update 🧠内容不变,sha不变
⚠️c2812c1 update 📝基准
edit
a1c019c (HEAD -> dev) update
ddd538d update
be04f1b update
⚠️c2812c1 update 📝基准
$ git rebase -i HEAD~3
// 弹出文件
pick be04f1b update
edit ddd538d update ✍️修改提交
pick a1c019c update
$ git add . && git commit --amend
$ git rebase --continue
2dcaeeb (HEAD -> dev) update 🧠内容不变,sha改变
b095462 update-ameng commit msg 🧠提交内容被修改,sha改变
be04f1b update 🧠内容不变,sha不变
⚠️c2812c1 update 📝基准
squash
a1c019c (HEAD -> dev) update
ddd538d update
be04f1b update
⚠️c2812c1 update 📝基准
$ git rebase -i HEAD~3
// 弹出文件
pick be04f1b update
squash ddd538d update ✍️压缩
squash a1c019c update ✍️压缩
c3c60a3 (HEAD -> dev) update-rebase-squash 🧠已压缩,sha改变
⚠️c2812c1 update 📝基准
fixup
a1c019c (HEAD -> dev) update
ddd538d update
be04f1b update
⚠️c2812c1 update 📝基准
$ git rebase -i HEAD~3
// 弹出文件
pick be04f1b update
fixup ddd538d update ✍️压缩
fixup a1c019c update ✍️压缩
2ddb48d (HEAD -> dev) update 🧠已压缩,sha改变
⚠️c2812c1 update 📝基准