说到版本控制工具,也和编程工具一样,五花八门,从早期的CVS到SVN,再到现在非常流行的Git,历经变迁,可以说各有各的优势。我刚参加工作的时候,用的比较多的是SVN,它是一个很好的版本控制工具,但它的思想仍然是中心式的,每个客户端有自己的拷贝,修改完提交到中心服务器。这种中心式的控制系统有个缺陷,就是一旦中心出了问题,如,服务器磁盘损坏,就会出大问题,所以有些公司采用中心备份的方式来规避风险。Git就不同了,Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,这个系统也是Linus开发的,他的理念是:任何代码仓库建成集中式都是不安全的,只有分布式才是安全的,没有中心,因为一旦中心被毁,将一无所有!
Git的缺陷就是比较复杂,命令太多,一不小心就容易出错,所以,这让我想起了以前Unix布道者说过的那句话“Unix并不复杂,使用它只需要一点点天分”,好了,言归正传,下面是我整理的一些常用的Git命令:
1.git clone "http://ip_address/subdir/project.git" 第一次下载源代码
2.git config --list 列出本地的Git配置
3.git fetch 取远端代码
4.git merge 把远端取到的代码和本地的代码进行合并
5.git status . or git status filename 当本地修改完成以后,看目录或者文件的状态,它会显示出本地有哪些变化,如图所示
6.git diff . or git diff filename 查看文件的具体变化,如图
可以看到这个文件多加了一行宏定义
7.git add filename 把修改了的文件新增上库
8.git rm filename 从库上删除,即不再跟踪这个文件的版本
9.git commit -m "提交代码说明"
10.rm filename ; git checkout filename 它没有类似svn revert 的替换命令,我采用的方法是,如果你确实要把这次的修改完全回退到没修改之前,可以用这两条命令替代
11.git push -u origin master 相当于svn ci ,这才是去合入远程主干
12.git log 查看提交记录
13.git log --pretty=oneline filename 只看这个文件的git提交记录
14.git reset --hard commitID 把本地代码回退到库上某一固定版本
15.git stash save "保存说明"
16.git stash list 查看保存了哪些存储
17.git stash pop 弹出第一个保存的存储
这些命令比较常用,Git的命令远不止这些,还有一大堆,Git和SVN孰优孰劣争论的意义不大,都是工具,没必要非得抬高一者贬低另一者,作为程序员,更重要的是看清每一种工具的特点,根据自身的项目情况,合适地选择。