此前一直在用乌龟svn做本地版本管理,最近认识了一帮伙伴,都在github上倒腾,我一开始只会在web上编辑,慢慢发现不方便,也好像有点低级,就也装了本地的git客户端。随后,鼠标右键的东西太多了,琢磨能否把乌龟svn删掉,这下发现,git做本地的版本管理,真是神器也,再简单不过了,有些网文写的过于复杂,其实就一句话:
在目录上执行git init,或者右键创建新的repo,然后,就可以愉快的开始提交(commit)了。
给非程序员使用,我觉得可以进一步简化,比如一键全部提交,因为很多人只是怕改来改去忘记了,可以随时回滚而已。当然,在本地做一些小项目,还可能需要创建一个dev分支,在这上改,改差不多了再merge一下。至于remote,push,pull这些东西,本地管理是不需要的,这与svn是根本不同的,一开始逻辑没拧过来,总想push上去。只要.git目录不强行删掉,其包含所有文件的snapshot,就是一个完整的版本控制系统,随时可以回溯到任何版本。实在要模拟远程,创建一个bare库即可。
由于是从svn转换过来,我期望可以完整的保存所有的记录。这里走了一些弯路:
- svn需要有trunk目录,如果没有,新建一个挪进去;
- 我用subgit这个工具import一键生成只有空文件,不好使;
- git svn clone是好使的;
git没法像svn那样checkout或者提交某个目录,而需要用subtree来创建一个分支,但这个分支是悬浮状态,从图形上看是凭空出来的一个点,后续的提交拉取感觉也奇怪。看了几个知名项目的git图形,聚沙成塔,聚人成精,模块单独拉出来都不会是长期分支,更不是subtree,再看看我一点点可怜的代码,还搞什么subtree分开闹革命,就都放在一起吧。
git客户端,首推git for windows portable 和 gitExtensions的组合,再有一个sourcetree备用就足够了。gitExtensions回朔文件历史的方式似乎比其他git客户端更为先进,不论是改名,换目录,他会尽力去找到源头,对初始规划不完善的业余人士非常有利,同时,看代码也非常方便,sourcetree窗口的布局不利于看代码。没有一个客户端能完整取代git命令本身,或多或少都有支持不足。
不清楚大规模项目实操中svn和git各如何,但在本地,显而易见git是更容易的选择。