17 March 2013

git是一个开源的分布式版本控制系统,如果你使用过svn,应该对版本控制系统有所了解。git是linus的第二个大作,目前很多著名项目都在git上进行开发。

因为我也是第一次使用git,在此仅介绍一些自认为是常用的功能,其他功能会在后续学习中再做了解。本人使用的操作系统是ubuntu 12.04,git的下载方法不多介绍,apt-get install试试吧(什么,你连这个命令都不知道,那你首先该学学怎么使用ubuntu)。

首先创建一个项目目录,mkdir project,进入该目录,执行命令:

git init

初始化后会产生一个.git目录,关于该目录下文件的具体用途请查看百度百科。这样,一个空的版本库就创建好了,现在可以向这个版本库添加文件:

git add README

当然,需要先创建一个文件,添加文件用到上面命令。这里需要介绍工作区、暂存区与版本库之间的关系,这里借取网上别人的图片以作解释。

我们用添加命令来具体解释这三者的区别:git add -u 更新的是暂存区的文件,如果工作区新建文件,则此文件不能添加到暂存区。git add . 更新暂存区文件,包括工作区新建的文件。 git add -A 更新暂存区和工作区的所有文件,所有文件都提交到暂存区(包括添加和删除的文件)。大意为,工作区为本地文件夹,暂存区为类似缓存的文件夹,而版本库是最后的目的地。每次添加都是再更新暂存区,区别在于是否更新工作区。

git commit

这个命令是提交修改,即把暂存区的文件提交至版本库,如果要添加修改信息git commit -m “info”

git status

可以看到,添加的文件已经被跟踪。删除文件使用git rm filename,删除文件你要小心,很可能会出现意想不到的结果,具体不在此介绍。

git diff

这条指令可以查看修改文件与原文件不同之处,该命令应在添加文件之前执行,即比较工作区与暂存区的文件修改部分。

git reflog -5

这条指令可以查看过去5次提交的修改,而如果我们希望返回到某一次修改,只需输入如下命令:

git reset --hard HEAD@{number}

number的具体数值根据git reflog -5来查看,这条命令实现了版本控制的基本功能。 因为很多文件不需要添加至版本库(例如.o文件等),git提供了忽略文件功能。需要创建一个名为.gitignore文件,添加需要忽略的文件类型。

vim.gitignore

添加需要忽略的文件例如*.o等。 输入git status –ignored -s查看已忽略的文件,忽略只对未加入版本库的文件有效,对已经加入版本库的文件无效。 到此,git的基本功能已经介绍完毕,接下来我们将看看git和github之间的关系。

github可以托管git库并提供一个web界面,即一个托管工具。我们只需要登录github,就可以参加其他程序员的开源项目、亦或查看别人的代码、托管自己的代码。所以,如果没有github账户,请先注册一个,后面会用到。接下来我们将介绍如何将git与github联系起来。 假设你已经有一个github帐号并登录,现在可以创建一个新的项目,找到图标creat a new repo,在Repository name 中添加你的项目名字,到此,网页不要关闭,一会还会用到。 创建ssh密匙,输入:

ssh-keygen -C 'your@email.address' -t rsa

你的姓名或邮箱的修改,可以输入git config –global user.name “your name”git config –global user.email you@email.address。 现在需要提交密匙,回到刚才github的页面(希望你还没关闭),在acounting setting 中找到SSH Public Keys,选择Add another public key,把你刚才创建的密匙拷贝到空白处。你的密匙在~/.sshid_rsa.pub中。现在输入ssh -v git@github.com测试是否链接成功吧,到此你的github与你本地的git已经联系起来了。(密匙生成一次就可以,多个项目共享) 到你创建的项目目录中(要先初始化),输入:

git remote add origin git@github.com:你的github用户名/你的github项目名.git
git push origin master

如果push不成,或者提升权限,或者git push -f 强力push(也有可能你需要先创建一个新的文件并添加内容后提交),再回到你的github网页,你会看到你的代码已经在你的github上了。下次再添加文件时,如前面介绍,只是在提交后(commit),push一下即可,如果想从远程版本库把代码更新到文件夹,那就pull吧,具体用法请自行查找。 如果想要将别人的代码拷贝到本地目录,可以使用git clone git://github.com/username/reponame,在此不多介绍,有需要请上网查找。

介绍到现在,我们已经基本清楚了git的简单使用,以及如何将git与github联系起来,大家现在就可以大显伸手了。

have fun and good luck!

参考资料:



blog comments powered by Disqus