git 原理与基本应用
概述
开发团队必然要面对一些代码问题:
个人操作引起的代码异常(不小心删除代码等)
多人开发下的各种冲突(多人同时修改同一文件等)
工作流重叠带来的混乱(开发、测试工作重叠,正常开发和紧急开发工作重叠等)
我们需要一个健壮的代码环境,以便尽量减少以上代码问题。git 做为目前最流行的代码版本管理工具,便能很好的帮我们解决以上问题。
安装和配置
请在官网下载对应程序并安装,安装后需要在命令行工具内进行如下设置:
windows 系统也可使用 git 安装时自带的 git bash 输入命令
创建 git 仓库
将尚未进行版本控制的本地目录转换为 Git 仓库;
提交代码
在 git 仓库中,文件可能有三种状态:未被 git 跟踪、已跟踪但未记录修改、已跟踪并记录了修改。git 通过 add 命令来标记一个文件是否需要被跟踪,而通过 commit 命令把未记录的修改提交到 git 仓库。(提交的更改会在.git 目录里保存)
可设置.gitignore 文件内容,来让 git 默认忽略一些文件的跟踪
版本控制
git 不同于有些其他版本控制工作,它每次 commit 会对所有修改进行快照。如下图所示:
快照会保存修改文件的全部内容(而不是文件的修改内容)。这样,git 可以很快速的查看历史上的任何一次 commit 版本。commit 本身也是一个存储对象,它保存着对应快照对象的索引;而分支只是指向特定某个 commit 对象的指针。基于这个设计,git 可以很快速的切换任何分支(只是显示某个特定 commit 对象的所有关联的快照);它也可以很轻易的创建成千上万个分支(分支只是指针,成本很低)。
HEAD 是指向当前工作分支的特殊指针
工作流并行开发的问题
我们可以通过分支的手段,在不同分支并行开发代码,以便让非线性工作流可以同时进行。但这样就会使两个分支的代码出现分叉,如下图:
当我们需要把 develop 开发的代码应用到 master 工作流时,git 会直接根据两个分支的最后一个版本进行对比,然后合并成一个新的版本,如下图:
这个也就是我们通常的 merge 操作
当两个版本直接存在冲突,则需要人为决定新版本使用什么样的代码,此操作一般称之为解决冲突
远程仓库的使用
git 是一个去中心化的分布式版本管理工具。这个设计可以让我们的版本管理工作(add、commit 等),不受远程仓库异常的影响(网络不可用、处理速度较慢等)。而因为这个设计,也导致任何一个版本库(本地、远程),都拥有项目的所有 commit 记录。git 通过跟踪的方式,绑定本地分支和远程分支。用户可以通过 pull 和 push 命令进行代码更新操作。
版权声明: 本文为 InfoQ 作者【丛风】的原创文章。
原文链接:【http://xie.infoq.cn/article/87dec3445c095cc18b3e0a5a6】。未经作者许可,禁止转载。
评论