Git系列4 回到從前 reset

2021-08-31 11:42:40 字數 3122 閱讀 6251

有時候我們總會忘了什麼, 比如已經提交了commit卻發現在這個commit中忘了附上另乙個檔案. 接下來我們模擬這種情況. 上節內容中, 我們最後乙個commitchange 2, 我們將要新增另外乙個檔案, 將這個修改也commitchange 2. 所以我們複製1.py這個檔案, 改名為2.py. 並把2.py變成staged, 然後使用--amend將這次改變合併到之前的change 2中.

$ git add 2.py

$ git log --oneline # "--oneline": 每個 commit 內容顯示在一行

# 輸出

904e1ba change 2 # 合併過的 change 2

c6762a1 change 1

13be9a7 create 1.py

有時我們新增add了修改, 但是又後悔, 並想補充一些內容再add. 這時, 我們有一種方式可以回到add之前. 比如在1.py檔案中新增這一行:

d = 3
然後addstaged再返回到add之前:

$ git add 1.py

$ git status -s # "-s": status 的縮寫模式

# 輸出

m 1.py # staged

-----------------------

$ git reset 1.py

# 輸出

unstaged changes after reset:

m 1.py

-----------------------

$ git status -s

# 輸出

m 1.py # unstaged

在穿梭到過去的commit之前, 我們必須了解 git 是如何一步一步累加更改的. 我們擷取網上的一些 

每個commit都有自己的id數字號,head是乙個指標, 指引當前的狀態是在哪個commit. 最近的一次commit在最右邊, 我們如果要回到過去, 就是讓head回到過去並reset此時的head到過去的位置.

# 不管我們之前有沒有做了一些 add 工作, 這一步讓我們回到 上一次的 commit

$ git reset --hard head

# 輸出

head is now at 904e1ba change 2

-----------------------

# 看看所有的log

$ git log --oneline

# 輸出

904e1ba change 2

c6762a1 change 1

13be9a7 create 1.py

-----------------------

# 回到 c10ea64 change 1

# 方式1: "head^"

$ git reset --hard head^

# 方式2: "commit id"

$ git reset --hard c6762a1

-----------------------

# 看看現在的 log

$ git log --oneline

# 輸出

c6762a1 change 1

13be9a7 create 1.py

怎麼change 2消失了!!! 還有辦法挽救消失的change 2嗎? 我們可以檢視$ git reflog裡面最近做的所有head的改動, 並選擇想要挽救的commit id:

$ git reflog

# 輸出

c6762a1 head@: reset: moving to c6762a1

904e1ba head@: commit (amend): change 2

0107760 head@: commit: change 2

c6762a1 head@: commit: change 1

13be9a7 head@: commit (initial): create 1.py

重複reset步驟就能回到commit (amend): change 2(id=904e1ba)這一步了:

$ git reset --hard 904e1ba

$ git log --oneline

# 輸出

904e1ba change 2

c6762a1 change 1

13be9a7 create 1.py

我們又再次奇蹟般的回到了change 2.

2005 10 20回到武漢20天小結

回到武漢的已經是20天了,但是,我每天還是沒有做到看 寫 除了是四處參加一些大公司的宣講會,還有就是看一些低階趣味的文章,灌水發帖子,沒有紮實的練習基本功,以前的同事說,他的那個公司專案經理打算招人,讓我過去看看,但是我自己的底子自己清楚,推說自己要搞 其實 這幾天加班加點已經寫好了,就是沒有和導師...

Git系列筆記 回滾

回滾命令 git reset hard 版本號 1.版本號可以通過git log檢視,如下我們現在有四個版本。head在版本4的位置,說明現在是版本4。2.輸入回滾命令,現在提示說head在版本3 3.檢視相關檔案,檔案已經回到了之前的版本,這裡不做演示 4.檢視現在的版本狀態,使用命令 git r...

《擴充套件和嵌入python直譯器》1 3 回到例子中

1.3 回到例子 回到我們的例子函式中,現在,你應該能夠理解下面這些語句 if pyarg parsetuple args,s command return null 根據是否由 pyarg parsetuple 函式設定了異常,如果在引數列表中檢測到錯誤 異常被設定 則函式返回 null 函式返回...