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