git解惑

http://www.fwqtg.net/git%E8%A7%A3%E6%83%91.html

一、Git是什么?

很多初次接触Git的人总是把Git与Github等同起来,我刚开始也是如此。其实Git是一个分布式软件控制/配置管理软件;而Github是一个可以托管Git版本库的网站而已。越来越多的开源项目选择使用Git进行管理,然后托管在Github网站上。
Git与svn、cvs都是进行版本管理的软件,不过控制方式却不尽相同。其中,cvs、svn属于集中式版本控制系统,所有开发者都需要跟统一的服务器版本库进行比对提交;而Git属于分布式版本控制系统,每个开发者都可以拥有一个自己的版本库,然后再进行合并提交。

二、Git的基本操作?

关于Git网上已经有很多基本操作的文章,由于Git很多是指令操作,介绍指令的很多,当然Git也有图形化工具支持,相关介绍也不少。我这里不赘述,给几个还不错的链接。
Git简单使用指南(这个指南看过之后常用的操作应该没什么问题了)
Git常用命令(这个博文画了个命令的思维导图,指令还挺全面的)

 Git相关的插件及图形化工具可以参考如下链接:

Git在Eclipse中的插件EGit的使用方法
Git在Windows下的工具MsysGit/TortoiseGit的使用方法

三、Git的冲突解决方法?

在多人协作开发过程中,很容易出现合并冲突。大多数情况下Git都可以自动合并成功,但是如果两个修改了同一个文件的同一个区域,此时就会出现逻辑冲突,无法自动合并成功,必须手动处理。 
发生冲突时,冲突文件会出现特殊标识符。其中<<<<<<<(七个小于号)和=======(七个等于号)之间的是当前分支的内容,=======(七个等于号)和>>>>>>>(七个大于号)之间的内容是合并的分支的内容。此时需要人工判断保留哪些内容,修改完成后,再将文件提交在暂存区(add操作),再提交到版本库就解决冲突了。

四、Git的内部原理?

Git在有远程版本库时,基本的工作流大致如下图: 

Git解惑
 而Git版本控制最关键的便是.git目录,几乎所有Git存储和操作的内容都在这个目录下。具体的目录存储内容如下: 

Git解惑
 在这些目录中,最重要的当属objects目录,因为版本库存储的所有对象(文件内容、提交记录)都放在这个目录下。目录中总共存储有四种对象:tag对象、commit对象、tree对象、blob对象;关系图的一角大致如下:
Git解惑
其中Tag对象指向一个Commit对象,有点像分支引用,不过tag对象的指向永远不会变化,而分支引用是可以任意改变的。

五、Git学习资料?

Git的学习门槛个人感觉比svn要高一些,当然基本操作还是可以比较快速的掌握的。Git的指令集非常丰富,功能远比想象中的强大得多。网上有很多的博文介绍,我也收集了些书籍。按照个人读后的感觉,由简到难排序: 
1. 《Pro Git》 中文链接 英文链接 下载地址
2. 《Git community book》 中文地址 下载地址
3. 《Git权威指南》 下载地址

发布了31 篇原创文章 · 获赞 43 · 访问量 21万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章