天天看點

git撤銷指令和對比差異指令

1.git status :檢視緩存區狀态

我們在工作目錄下建立一個name.txt檔案夾。打開git bash,輸入

git status

指令
git撤銷指令和對比差異指令
git提示我們建立了name.txt檔案,但是還未進行

add

操作加入到緩存區,是以git目前無法跟蹤。
根據提示我們輸入add指令:

git add name.txt

,然後輸入

git status

再檢視緩存區狀态
git撤銷指令和對比差異指令
name.txt變成綠色了,說明我們

add

操作成功,那假如說我add之後我們我想撤銷怎麼辦

(未commit)

。我們可以執行

git reset HEAD name.txt

指令撤銷。最後輸入

git status

再檢視緩存區狀态
git撤銷指令和對比差異指令
可以看到name.txt變成了未add了

2.git checkout --檔案名

git checkout --檔案名 用于撤銷工作區的内容。同樣舉上面的例子:假如說昨天name.txt被我送出到緩存區了,今天我又對name.txt進行修改,但是現在我想把工作區的内容撤銷掉。

我們可以先使用

git diff name.txt

檢視工作區和緩存區的差異
git撤銷指令和對比差異指令
發現今天我隻給name.txt添加了倆個字母aa(當然日常工作可不是這麼簡單,你一天工作可能寫到自己發懵,你手動删除根本不知從哪開始),我想恢複到昨天的内容可以調用:

git checkout -- name.txt

。你打開你的檔案就會發現内容已經恢複到昨天的狀态。

git diff name.txt

可以檢視工作區和緩存區的差異,那工作區和本地倉庫差異、緩存區和本地倉庫差異怎麼看。

3.檢視差異指令

git diff

比較的是工作區和暫存區的差别

git diff --cached

比較的是暫存區和版本庫的差别

git diff HEAD

可以檢視工作區和版本庫的差别

還是舉上面的例子。name.txt檔案被我們commit到了版本庫,現在我在工作區對name.txt進行修改。通過

git diff HEAD name.txt

可以檢視工作區和版本庫的差異
git撤銷指令和對比差異指令
現在我在工作區對name.txt進行修改後進行

add

操作,通過

git diff --cached name.txt

可以檢視緩存區和版本庫的差異
git撤銷指令和對比差異指令
因為我們add之後緩存區和工作區的代碼已經一樣,是以他們和版本庫的差異是相同的。

4.git reset 版本号

git reset 版本号

可以讓我們回退到某個版本,預設是版本庫和緩存區都會回退,工作區不會回退。

依舊使用上面的例子:假如說我們今天對name.txt修改了然後準備下班我們把它add到緩存區,然後commit到版本庫。但是突然發現有個bug怎麼辦?

先調用

git reflog

檢視我們的送出的版本号,這個指令可以看到我們所有的操作,包括删掉的

commit

git撤銷指令和對比差異指令
然後我們可以看到第一個commit是我們剛送出的版本嗎,如果要回到紅圈圈起來的那個版本我們可以調用:

git reset 6637c52

。最後調用

git log

檢視一下日志。
git撤銷指令和對比差異指令

已經顯示版本回退成功了

需要注意的是緩存區也會跟随版本回退,工作區不變。當你重新修改完後需要add再commit。

繼續閱讀