git的基本用法

    (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它的优势有:

  1. 可以复制整个仓库,在本地可以随时提交代码。即使长时间不能连接到代码服务器,可以在本地进行版本控制。
  2. 在clone, push, pull的过程中,都会将要传输的内容进行打包。一般代码都是小文件,文件多了,即使网速再快,还是会感觉传输速度很慢,打包以后再传输,可以很好的解决这个问题。

前面一篇博客提到的那个小工具,现在托管在http://gitorious.org/image-creator/image-creator 这里。

猜你喜欢

转载自intl-bcds.iteye.com/blog/652594
今日推荐