博文来自http://blog.csdn.net/wzy_1988/article/details/8776617
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
前言
之前项目里一直都是用svn进行代码的版本控制,自己对svn仓库的搭建以及svn的使用还是挺熟练的,但是git作为一个更牛逼的版本控制工具,而且互联网上很多具有开源精神的大神也在github上托管了自己的代码,还是很值得我学习使用一下的,这里会记录自己学习使用git的一些心得,会持续的更新
入门
我系统的是ubuntu12.04 desktop,默认情况下,ubuntu中没有安装git,所以首先需要在系统中进行git的安装
git安装
- sudo apt-get install git-core
申请git帐号
如果只是需要将github上感兴趣的代码拷贝到本地,自己进行修改使用,而不打算共享发布的话,其实不申请帐号也没关系,只需要git clone代码到本地就可以了。但是这种做法不是开源精神提倡的,敢于秀出自己的代码,敢于和别人一起讨论一起进步才是真正的geek。
去www.github.com注册一个帐号就可以完成申请了,具体的注册流程就不多说了
上传公钥
git是通过ssh的方式访问资源库的,所以需要将自己的公钥上传到github上
在github.com的界面中选择右上角的Account settings,然后选择SSH Keys,添加自己的公钥即可
![](https://img-my.csdn.net/uploads/201304/09/1365478463_3500.png)
管理自己的项目
创建git仓库
个人开发一个模块,并暂时用代码工具管理起来(这样做可以让你及时备份和恢复),创建一个git库是很容易和方便的,使用git inti命令即可
![](https://img-my.csdn.net/uploads/201304/09/1365498068_8058.png)
这样一个空的本地的git仓库就创建好了,并在版本库根目录中创建一个.git的子目录。以后,所有的文件变化信息都会保存到这个目录下。在.git目录下有一个config文件,需要我们添加一下个人信息后才能使用。否则我们不能对其中添加和修改任何文件
原始的config文件
![](https://img-my.csdn.net/uploads/201304/09/1365498305_5388.png)
我们需要加入自己的名字和邮箱
- git config user.name wangzhengyi
- git config user.email 15866883396@126.com
![](https://img-my.csdn.net/uploads/201304/09/1365516517_1656.png)
git目录结构
![](https://img-my.csdn.net/uploads/201304/09/1365517011_2607.png)
目录解释
- branches/ 新版的Git已经不再使用这个目录,所以大家看到它一般会是空的
- COMMIT_EDITMSG 保存着上一次提交时的注释信息
- config 项目的配置信息
- description 项目的描述信息
- HEAD 项目当前在哪个分支的信息
- hooks/ 默认的“hooks” 脚本文件
- index 索引文件,git add 后把要添加的项暂存到这里
- info/ 里面有一个exclude文件,指定本项目要忽略的文件
- logs/ 各个refs的历史信息
- objects/ 这个目录非常重要,里面存储都是Git的数据对象.包括:提交(commits), 树对象(trees),二进制对象(blobs),标签对象(tags)
- refs/ 标识着你的每个分支指向哪个提交(commit)
git-add、git-rm
向git库中添加或删除文件。其实,说使用git-add命令向git库里添加文件是不对的,或者说至少不是全面的。git-add命令的本质是命令“git-update-index --add”的一个包装。因此,git-add除了可以添加文件,还可以标识文件修改。在调用了git-add后,才可以做commit操作。git-rm也是一样,它是“git-update-index --force-remove”的一个包装
git-status
通过该命令,我们可以查看版本库的状态。可以得知哪些文件发生了变化,哪些文件还没有添加到git库中等等。建议每次commit前都要通过该命令确认库状态。以避免误操作。
其实,最常见的误操作是,修改了一个文件,没有调用git-add通过git库该文件已经发生了变化就直接调用commit操作,从而导致该文件并没有真正的提交。这时如果开发者以为已经提交了该文件,就继续修改甚至删除这个文件,那么修改的内容就没有通过版本管理起来。如果每次提交前,通过git-status查看一下,就可以发现这种错误
git-commit
直接调用git-commit命令,会提交填写注释。每一次提交,git就会为全局代码建议一个唯一的commit标识代码,用户可以通过git-revert命令恢复到任意一次提交时的代码。
提交前可以用git-diff来查看文件的变化
clone别人的项目
我相信很多朋友跟我一样,都是为了得到别人的开源项目代码才开始学习使用git的,我初衷是为了得到并改进一份php实现汉字转拼音的项目代码。而获取一个项目的代码的一般做法就是用git clone命令直接复制
例如,一份汉字转拼音的代码,搜索github时候,可以的如下一些提示:
![](https://img-my.csdn.net/uploads/201304/09/1365517528_4812.png)
- git clone ssh地址
示例
![](https://img-my.csdn.net/uploads/201304/09/1365517656_6508.png)
fork别人的项目
这是git初学者最常见使用的情况,看到大牛共享了自己的代码,我们也可以贡献一下自己的力量。
- 首先,需要去自己感兴趣的项目中进行fork,fork出自己的一份分支来。fork之后,一般可以看到一个ssh访问的地址。例如:
- git@github.com:wangzhengyi/HanziToPinyin.git
- 复制代码,使用git clone命令,这时候,代码一般来说是最新的
- git clone git@github.com:wangzhengyi/HanziToPinyin.git
- 然后,开始努力的工作,不断的修改,增加内容。接着,git add, git commit。当然,你可以git checkout -b dev-branch到开发分支工作,工作完成,确认没问题了再归并:git merge
- 你想要修改的完成了,想发布您的改进,很简单。直接git push origin master就提交到您的github相应的项目下了。在页面上已经有“Pull Requests”的提示,让您向原始项目提交归并代码请求
- 当你提交“Pull Requests”请求,并被原项目作者接受您的请求。您的修改记录已经纳入了git log的列表中,这就是您的贡献证明。于是乎,告一段落了,你已经为开源世界贡献了自己的一份力量
github上传分享代码
注册了github后你就有会有0.3G的免费空间,不过只能创建公开项目,这已经可以满足代码分享的目的,而且它的代码展示方式非常的优美,基于git版本控制系统
在github上建立项目
登录github后,你可以在右边靠中那个找到一个按钮“New Repository”,点击过后,填入项目名称,说明和网址过后就可以创建了,然后会出现一个提示页面,记录下项目地址即可。