Git 三 版本回退 撤消修改 檔案刪除

2022-04-22 05:18:53 字數 3441 閱讀 7927

//檢視git操作日誌

$ git log

//單行格式檢視操作日誌

$ git log --pretty=oneline

//還原操作到上一次版本,有幾個^就上幾次

$ git reset --hard head^

//還原操作到某一次版本,後面的是版本code

$ git reset --hard e6ded2

//撤銷修改,在add之前的修改,撤銷工作區中的修改

$ git checkout -- testgit.txt

//撤銷修改,在add之後的修改,撤銷到add前

$ git reset head testgit.txt

//刪除工作區中的檔案

$ rm test.txt

多次提交後可以通過指令檢視歷史提交記錄

$ git log

commit a50498c8d3cb4f77eb6b2230b5e4fdc80d3f7e09 (head -> master)

author: shane date: sat jul 1 11:23:53 2017 +0800

test commit,2 files is commited

commit 81a320cda2e80405cb9e4c92c236bc7289eaf0f8

author: shane date: sat jul 1 10:47:47 2017 +0800

readme file

以上是詳細資訊的版本,可以使用指令只呈現一行,看起來比較清晰

$ git log --pretty=oneline

e6ded21d1de20d8ea2b847e9a35ac50fcabfac70 (head -> master) test commit2

a50498c8d3cb4f77eb6b2230b5e4fdc80d3f7e09 test commit,2 files is commited

81a320cda2e80405cb9e4c92c236bc7289eaf0f8 readme file

這個是又提交了一次的歷史log,--pretty=oneline表示用一行的格式顯示提交

前面一串是提交版本的id,head表示當前版本,id後面跟著的是提交的content

檢視指令後如果最近一次提交有錯誤想要回退到前一次,可以使用指令重置,類似於遊戲裡的讀檔

$ git reset --hard head^

head is now at a50498c test commit,2 files is commited

使用指令reset就可以還原到某一次提交,head^表示還原到上乙個版本,如上例中的a50498c 版本

有幾個^就回退幾個版本,如果版本較多可以寫成head~n,n代表回退的版本個數

此時再檢視log

$ git log

commit a50498c8d3cb4f77eb6b2230b5e4fdc80d3f7e09 (head -> master)

author: shane date: sat jul 1 11:23:53 2017 +0800

test commit,2 files is commited

commit 81a320cda2e80405cb9e4c92c236bc7289eaf0f8

author: shane date: sat jul 1 10:47:47 2017 +0800

readme file

此時最後一次的提交log已經沒有了,如果還原錯了,只要有最後一次提交的版本id,也是可以撤銷還原的,再回到最後一次的版本

$ git reset --hard e6ded21d1de20d8ea2b847e9a35ac50fcabfac70

head is now at e6ded21 test commit2

如果你找不到id,git提供了乙個指令,可以回溯你的每一次操作,即使你關掉了git bash 第二天再開啟,也是可以看到記錄的

$ git reflog

e6ded21 (head -> master) head@: reset: moving to e6ded21d1de20d8ea2b847e9a35ac50fcabfac70

a50498c head@: reset: moving to head^

e6ded21 (head -> master) head@: commit: test commit2

a50498c head@: commit: test commit,2 files is commited

81a320c head@: commit (initial): readme file

在這裡就能找到最後一次提交的id是e6ded21,然後再reset到這個版本就好了

撤銷修改有兩種場景

當你在工作區修改了一部分檔案,但是又想捨棄修改的時候,乙個乙個還原會很麻煩,這時git提供了乙個指令

$ git checkout -- testgit.txt
git checkout -- 檔名,指對這個檔案進行還原,--很重要,如果不加--表示切換到某個分支

如果你要捨棄的修改已經add到了暫存區,需要使用以下指令

$ git reset head testgit.txt
git reset head 檔名,表示將當前master分支暫存區的檔案testgit.txt unstage到工作區,然後在使用checkout指令撤銷修改即可

如果你新建了乙個檔案,並且add、commit到了本地分支,然後你想把他刪除,可以使用以下指令

$ rm test.txt
rm 我猜是remove的意思,這個指令只是刪除工作區中的檔案,git會檢測到test.txt 有修改

此時如果確實要刪除檔案並提交,需要先執行git中的檔案刪除,即相當於把刪除的修改add到暫存區,再進行提交

$ git rm test.txt

rm 'test.txt'

$ git commit -m "delete test.txt"

[master e8c7ff0] delete test.txt

1 file changed, 1 deletion(-)

delete mode 100644 test.txt

若是誤刪,和上面修改檔案還原操作一致,先使用git reset head filename ,再使用git checkout -- filename,進行還原

Git學習筆記(三) 版本回退

實際工作中,乙個檔案可能被提交過多次,我們可以用git log命令來檢視提交記錄 可以看見我提交過兩次,並且有每次提交時候的說明,如果嫌輸出的資訊太多,可以加上這個引數 pretty oneline 如果你想回退一次操作,你該怎麼做呢?在git中,用head表示當前版本,也就是最新的提交69e77....

Git 七 版本回退

現在,你已經學會了修改檔案,然後把修改提交到git版本庫,現在,再練習一次,修改readme.txt檔案如下 git is a distributed version control system.git is free software distributed under the gpl.然後嘗試...

Git的使用三(版本回退)僅限Mac親測

現在,你已經學會了修改檔案,然後把修改提交到git版本庫,現在,再練習一次,修改readme.txt檔案如下 git is a distributed version control system.git is free software distributed under the gpl.然後嘗試...