原理和概念
这里主要讲述git。先了解一下从版本控制的角度上,对资料进行管理的发展简程。
阶段1, 文件系统(FS)
早期,文件基本上通过操作系统文件系统管理。
资料以目录路径的方式存于文件系统中,常见的文件系统如 fat32
, ext3
等。
阶段2, 集中式版本控制(CVCS)
后来,出现了版本控制的概念,对开发的内容通过集中式版本控制工具进行。
除了文件系统中体现的资料路径外,还通过中心服务器,用版本号的方式,可对每次修改的历史进行管理,
常见的集中版本控制工具如 vcs
, svn
。
阶段3, 分布式版本控制(DVCS)
再后来,由于集中式版本控制中,有关历史的全部内容集中在一处服务器中管理,稳定性,以及速度上,可迁移上都不方便,于是出现了分布式版本控制。
不是用版本号而是用每次提交的内容指纹来管理资料,不仅通过一个中心服务器进行版本控制,任意远程、本地都可参与进来,并且它们之间可相互同步其管理信息。
常见的工具用提交管理,如 git
, mercurial
。
subversion与git原理图
一个svn服务端,简单,但是慢
1_one_svn.png两个svn服务端,快,但是复杂
2_two_svn.png如何使其简单、并且快?
3_hwo_to_sync.png使用 分布式 git 服务端,即简单又快。
4_git.png理解的关键点
下面给出便于理解的关键,详细内容自行查阅。
分布式的理解
基于 git
的分布式版本控制,每个端都是独立的服务器,通过 git pull
/ git push
相互同步。
工作流程、状态
主要指 svn & git
的 add,commit,status
, 各有何不同?
工作空间(work area)、缓存空间(staged area)、库(repository)
针对 git
的内容
object
, snapshot
, index
, repository
.
git directory
, git work directory
, fast-forward
.
git常用操作
下面给出最常用的 git
操作子命令,详细内容自行查阅。使用之时,注意需要给出 git
关键字以及参数,例如:
$git commit -m 'one commit tip.'
本地相关
branch
, merge
, checkout
, reset
, clean
, log
, commit
, status
, diff
.
与它人协作相关
pull
, push
, remote
, rebase
, format-patch
, am
.
冲突处理相关
mergetool
, merge
, stash
其它
config
, clean
, gc
, help
.