您的位置:首页 > 其它

git的基本用法

2010-10-09 10:52 190 查看
Windows下git安装 http://code.google.com/p/msysgit/

像SVN一样使用git: http://code.google.com/p/tortoisegit/

以下内容转自http://intl-bcds.javaeye.com/blog/652594

从本地创建git仓库开始。

Bash代码

git init

,这样就会在文件夹中初始化一个git的仓库。具体初始化的内容,可以看这个文件夹里面的.git文件夹。初始化完之后,就可以添加文件了。写了写代码,保存到这个image_creator目录中,然后执行

Bash代码

git add .

将目录下的所有文件加入到版本管理,当然这里也可以一个个手工添加。在批量添加的时候,可能会遇到的问题,就是一些不需要版本管理的文件(如编译产生的执行文件和对象文件,一些ide的项目管理文件等),可以编辑.git目录里面info/exclude文件,在里面添加不需要版本管理的文件名。如果需要全局配置,可以在创建一个文件(如在主目录下创建.gitignore),在里面写入不需要版本控制的文件名形式,并执行

Bash代码

git config --global core.excludesfile=XXX

创建一个全局的设置。

扯远了,添加了文件之后,就可以提交了。提交的命令和svn类似

Bash代码

git commit -a -m "message"

觉得每次打commit太长了?git可以通过设置alias来创建命令的别名,同样是使用git config命令。其实git config命令就是在根据输入的值,编辑~/.gitconfig文件而已,所以这里贴下我的alias配置:

Conf代码

[alias]

st = status

co = checkout

ci = commit

这样用起来是不是和svn差不多了呢。

现在已经可以编辑和提交代码了,对于版本管理软件来说,创建分支也是非常必要的。git对于分支的管理非常方便,相对svn,git创建分支的代价非常小。直接使用

Bash代码

git branch BRANCK_NAME

就可以创建新的分支,如果不带后面的分支名,git会列出所有在本地的分支。要使用这些分支,还需要一步,那就是检出

Bash代码

git checkout BRANCK_NAME

不知道为什么这个操作要叫checkout,是像让用svn的人更加适应?这个操作看来更像是在切换分支。经过了这个步骤,本地代码就变成了指定分支中的了,直接提交只会被提交到分支上。要将代码合并到主干,操作和svn类似,使用git merge操作。merge操作用的还不够精,具体用法还是自己去看文档吧。

git同样也支持创建tag,用法也非常简单。同时,git还支持使用git archive将分支(tag)进行归档,创建一个压缩包,这个压缩包将会去除.git文件夹。

本地的基本用法介绍完了,现在说下远程的。(事先需要将本地的ssh公钥内容上传到gitorious的ssh管理中,这样才能够进行身份认证。)在gitorious上创建一个项目,并在项目中添加一个仓库后,上面会提供一个push的地址,同时也有用法提示:

Bash代码

git remote add origin git@gitorious.org:image-creator/image-creator.git

git push origin master

这样会在本地的配置文件中配置远程地址,通过git的push命令,将本地的版本库上传到服务器上。别人需要复制这个项目的仓库时,只需要执行:

Bash代码

git clone git://gitorious.org/image-creator/image-creator.git

就能够将整个仓库复制到本地。和svn的最大不同就在于此,git复制了整个仓库的版本历史,不像svn那样只有一个工作目录。要将本地的分支也push到服务器上去,只要执行:

Bash代码

git push origin BRANCK_NAME

就可以了,这个也同样适用于tag。

最后,说下用了一段时间的git,相比svn它的优势有:

可以复制整个仓库,在本地可以随时提交代码。即使长时间不能连接到代码服务器,可以在本地进行版本控制。

在clone, push, pull的过程中,都会将要传输的内容进行打包。一般代码都是小文件,文件多了,即使网速再快,还是会感觉传输速度很慢,打包以后再传输,可以很好的解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: