Git要用才會用 #2 修改過去某commit的code (rebase -i edit)

Winsome on 2020-05-10 Sun

發現過去某個 commit 寫得不好,想要修改怎麼辦?
這時可以用 rebase -i 的 edit 來處理

rebase -i

rebase -i是互動模式,有很多種功能可以用
這篇介紹的是其中的edit <commit>,可以針對某個 commit 做修改

rebase -i 可用的功能:

# 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 <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       create a merge commit using the original merge commit's
# .       message (or the oneline, if no original merge commit was
# .       specified). Use -c <commit> to reword the commit message.

rebase 第一個 commit

做 rebase -i 的時候,必須要回到"要處理的 commit" 的前一個 commit。
那如果要改的 commit 就是第一個 commit 怎麼辦?那就要用以下指令

git rebase -i --root

reflog

reflog 可以顯示所有 git 的操作紀錄,前面會顯示 commit 的值,可以回到想去的地方。
這是當 merge 或 rebase 做完又想反悔的時候可以使用。

使用 reflog 查到 commit 就可以回到過去

git reset <commit> --hard

📋 文件

Git-Tools-Rewriting-History