1. 程式人生 > >git檢視提交歷史並進行程式碼回退的方法

git檢視提交歷史並進行程式碼回退的方法

那麼如何檢視一個檔案所進行過的提交呢?
在git下來的原始碼目錄下,執行git log 檔名  即可檢視到有關此檔案的所有提交;
例如:
[email protected]:~/plugins/automount$ git log  gsd-manager.c
commit 28810e41dbdd2f68fd0cc863455b908aab9eb695
Author: xxxx <[email protected]>
Date:   Thu Jun 12 04:34:58 2014 +0800

    modify for blank cd

commit 55445cd02800408c8004acb629d4c6f934c3d6ce
Author: xxxx <
[email protected]
>
Date:   Thu Jun 5 01:25:55 2014 +0800

    update

commit 39929d344466c026635908fb6edf73b6eab649f6
Author: xxxx <[email protected]>
Date:   Wed Jun 4 12:00:49 2014 +0800

    disable error msgbox.

commit bbc272347cbaaa798b39d25b108bd332bbf1a795
Author: xxxx <[email protected]
>
Date:   Tue Apr 15 17:39:50 2014 +0800

    add for bug 8888

從上面可以看到對於gsd-manager.c檔案來說,進行過3次提交,而我們現在要回退到第一次修改後的時候的樣子(主要是原始碼要恢復到第一次提交時的版本)。
那麼如何回退呢?
回退的命令為git reset;
而git reset命令格式為:
git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
其中各個選項的簡介如下:
-q, --quiet           be quiet, only report errors
    --mixed               reset HEAD and index
    --soft                reset only HEAD
    --hard                reset HEAD, index and working tree
    --merge               reset HEAD, index and working tree
    --keep                reset HEAD but keep local changes
mixed和soft都不會恢復原始碼,而hard和merge才會恢復原始碼到對應的commit。
那麼上面的檔案要恢復到第一次提交的版本的話,那麼執行的命令為:
git reset --hard bbc272347cbaaa798b39d25b108bd332bbf1a795
其中bbc272347cbaaa798b39d25b108bd332bbf1a795為第一次提交的提交號;
當然git reset這個操作也會造成其他檔案在第一次版本的原始碼的回退。