/*********************************************************************
* Author : Samson
* Date : 09/10/2014
* Test platform:
* Linux ubuntu 3.2.0-58-generic-pae
* GNU bash, version 4.2.39
* *******************************************************************/
经常在多协作的开发过程中,经常会进行版本的回退进行恢复版本,以便方便测试或进行代码的移出或……
那么如何查看一个文件所进行过的提交呢?在git下来的源码目录下,执行git log 文件名 即可查看到有关此文件的所有提交;
例如:
ufo@ufo:~/plugins/automount$ git log gsd-manager.c
commit 28810e41dbdd2f68fd0cc863455b908aab9eb695
Author: xxxx <xxxx@xxxx.com>
Date: Thu Jun 12 04:34:58 2014 +0800
modify for blank cd
commit 55445cd02800408c8004acb629d4c6f934c3d6ce
Author: xxxx <xxxx@xxxx.com>
Date: Thu Jun 5 01:25:55 2014 +0800
update
commit 39929d344466c026635908fb6edf73b6eab649f6
Author: xxxx <xxxx@xxxx.com>
Date: Wed Jun 4 12:00:49 2014 +0800
disable error msgbox.
commit bbc272347cbaaa798b39d25b108bd332bbf1a795
Author: xxxx <xxxx@xxx.cn>
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这个操作也会造成其他文件在第一次版本的源代码的回退。