(edit by king)现在一直使用git作为版本管理软件,原来在家里的龙芯电脑上搭建了个gitosis(搭建过程可以看我的个人博客:http://blog.sina.com.cn/s/blog_445694b90100djiu.html 和 http://blog.sina.com.cn/s/blog_445694b90100e3wd.html )
但是家里一般不会老是开着这台电脑,而且外网ip地址也会变化,所以今天去gitorious上申请了个帐号,尝试着把本地写的代码push到gitorious 上面去。
这里描述下整个使用过程。从本地创建git仓库开始。
先在一个文件夹(这里是image_creator)中执行
git init
,这样就会在文件夹中初始化一个git的仓库。具体初始化的内容,可以看这个文件夹里面的.git文件夹。初始化完之后,就可以添加文件了。写了写代码,保存到这个image_creator目录中,然后执行
git add .
将目录下的所有文件加入到版本管理,当然这里也可以一个个手工添加。在批量添加的时候,可能会遇到的问题,就是一些不需要版本管理的文件(如编译产生的执行文件和对象文件,一些ide的项目管理文件等),可以编辑.git目录里面info/exclude文件,在里面添加不需要版本管理的文件名。如果需要全局配置,可以在创建一个文件(如在主目录下创建.gitignore),在里面写入不需要版本控制的文件名形式,并执行
git config --global core.excludesfile=XXX
创建一个全局的设置。
扯远了,添加了文件之后,就可以提交了。提交的命令和svn类似
git commit -a -m "message"
觉得每次打commit太长了?git可以通过设置alias来创建命令的别名,同样是使用git config命令。其实git config命令就是在根据输入的值,编辑~/.gitconfig文件而已,所以这里贴下我的alias配置:
[alias] st = status co = checkout ci = commit
这样用起来是不是和svn差不多了呢。
现在已经可以编辑和提交代码了,对于版本管理软件来说,创建分支也是非常必要的。git对于分支的管理非常方便,相对svn,git创建分支的代价非常小。直接使用
git branch BRANCK_NAME
就可以创建新的分支,如果不带后面的分支名,git会列出所有在本地的分支。要使用这些分支,还需要一步,那就是检出
git checkout BRANCK_NAME
不知道为什么这个操作要叫checkout,是像让用svn的人更加适应?这个操作看来更像是在切换分支。经过了这个步骤,本地代码就变成了指定分支中的了,直接提交只会被提交到分支上。要将代码合并到主干,操作和svn类似,使用git merge操作。merge操作用的还不够精,具体用法还是自己去看文档吧。
git同样也支持创建tag,用法也非常简单。同时,git还支持使用git archive将分支(tag)进行归档,创建一个压缩包,这个压缩包将会去除.git文件夹。
本地的基本用法介绍完了,现在说下远程的。(事先需要将本地的ssh公钥内容上传到gitorious的ssh管理中,这样才能够进行身份认证。)在gitorious上创建一个项目,并在项目中添加一个仓库后,上面会提供一个push的地址,同时也有用法提示:
git remote add origin [email protected]:image-creator/image-creator.git git push origin master
这样会在本地的配置文件中配置远程地址,通过git的push命令,将本地的版本库上传到服务器上。别人需要复制这个项目的仓库时,只需要执行:
git clone git://gitorious.org/image-creator/image-creator.git
就能够将整个仓库复制到本地。和svn的最大不同就在于此,git复制了整个仓库的版本历史,不像svn那样只有一个工作目录。要将本地的分支也push到服务器上去,只要执行:
git push origin BRANCK_NAME
就可以了,这个也同样适用于tag。
最后,说下用了一段时间的git,相比svn它的优势有:
前面一篇博客提到的那个小工具,现在托管在http://gitorious.org/image-creator/image-creator 这里。