//檢視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.然後嘗試...