HEAD 指標所指向的提交紀錄就是現在看到的版本
HEAD 指標可指向任何分支或任何提交紀錄
移動 HEAD 指標就可移動到任意分支或任意提交紀錄
藉由移動 HEAD 指標前往指定的提交紀錄,對 HEAD 指標來說存在於未來的提交紀錄會無法用 git log
看到,這些看不到的提交紀錄不會消失
在 GUI 軟體中,HEAD 指標會移動,線圖不會改變
1link> git checkout 位置次數
位置可以是以下三種的其中一種:
次數可用可不用,次數的符號可以是 ^ 或 ~,用符號的個數或在一個符號後面寫數字,代表要倒退幾次,回到幾個版本紀錄前,舉例來說以下兩行的意義相同:
1linkgit checkout main^^^
2linkgit checkout main~3
使用時機是編輯檔案後,加入索引前
一個檔案
1linkgit checkout -- 檔名
所有檔案
1linkgit checkout .
取消修改檔案的狀態變化:
步驟 | 指令 | 原狀態 > 新狀態 |
---|---|---|
修改檔案 | 無 | 未修改 > 已修改 |
取消修改檔案 | git checkout -- 檔名 | 已修改 > 未修改 |
在 GUI 軟體中,HEAD 指標會移動,線圖會改變
1linkgit reset 位置次數
位置可以是以下三種的其中一種:
次數可用可不用,次數的符號可以是 ^ 或 ~,用符號的個數或在一個符號後面寫數字,代表要倒退幾次,回到幾個版本紀錄前,舉例來說以下兩行的意義相同:
1linkgit reset HEAD^^^
2linkgit reset HEAD~3
用 git reset
或 git checkout 分支
都會移動 HEAD 指標,並留下一筆紀錄,可用以下指令查詢
1linkgit reflog
依序執行這七件事
會出現下列執行結果
1link> git log --oneline
2link1234567 (HEAD -> main) second commit
3linkabcdefg Initial commit
4link
5link> git checkout main
6linkAlready on 'main'
7link
8link> git reset abcdefg
9linkUnstaged changes after reset:
10linkM 檔案名稱
11link
12link> git log --oneline
13linkabcdefg Initial commit
14link
15link> git reflog
16linkabcdefg (HEAD -> main) HEAD@{0}: reset: moving to abcdefg
17link1234567 HEAD@{1}: checkout: moving from main to main
18link
19link> git reset 1234567
20link
21link> git log --oneline
22link1234567 (HEAD -> main) second commit
23linkabcdefg Initial commit