有時候我們總會忘了什麼, 比如已經提交了commit
卻發現在這個commit
中忘了附上另乙個檔案. 接下來我們模擬這種情況. 上節內容中, 我們最後乙個commit
是change 2
, 我們將要新增另外乙個檔案, 將這個修改也commit
進change 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
然後add
去staged
再返回到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 函式返回...