Git 常用指令: checkout, reset, revert
HEAD 是一個 reference,它是指向目前所 checkout 的 commit,基本上,其實就是你目前所在的 commit。
大部份 git 的指令如果要修改 commit tree 的狀態的話,都會先改變 HEAD 所指向的 commit。
git checkout c2
相對引用
使用相對引用,你可以從一個易於記憶的地方(比如說 branch 名稱 bugFix 或 HEAD)開始工作。
介紹兩個簡單的用法:
- 使用 ^ 向上移動一個 commit
- 使用 ~<num> 向上移動多個 commit
首先看看插入(^)這一個符號。把這個符號接在某一個 reference 後面,就表示你告訴 git 去找到該 reference 所指向的 commit 的 parent commit。
所以 main^ 相當於 "main 的 parent commit"。
git checkout main^
波浪符號後面可以選擇一個數字(你也可以不選擇),該數字可以告訴 Git 我要向上移動多少個 commit
git checkout HEAD~4
可以使用 -f 選項直接讓分支指向另一個 commit。
(強制)移動 main 指向從 HEAD 往上數的第三個 parent commit。
git branch -f main HEAD~3
取消 git 的修改
在 git 裡主要用兩種方法來取消修改,一種是 git reset,另外一種是 git revert。
git reset 把分支的參考點退回到上一個 commit 來取消修改。你可以認為這是在"重寫歷史"。
git reset HEAD~1
雖然在 local branch 中使用 git reset 很方便,但是這種「改寫歷史」的方法對別人的 remote branch 是無效的!為了取消修改並且把這個狀態分享給別人,我們需要使用 git revert。
git revert HEAD