第一章 Git 一览
虽然这个系列的文章主要关注的是Github,然而首先了解下Git的基本概念和名词也是非常有帮助的。
工作目录(Working Directory)
工作目录是你个人计算机上的一个目录。在该目录下,每一个开发人员都有一套完整代码文件和相关文件的拷贝。在这个工作目录下的代码文件,Git就能自动进行版本控制。
Git文件
在工作目录中,您可能会发现一些额外的文件, .gitattributes和 .gitignore,这些用于告知Git如何处理文件夹中的文件。.gitattributes会告诉 Git 如何处理各种文件的比较操作。.gitignore指示 Git(基于扩展名) 的某些文件不应由 Git 处理。这些额外的文件会在后面的章节中进行更多的介绍。
图1 初始Git工作目录
当你创建一个 Git 仓库时,Git 会将这些文件( .gitattributes和 .gitignore)的默认版本添加到你的工作目录。你可以在现有的文件目录上创建一个 Git 仓库或是创建一个完全新的Git 仓库和工作目录。你还可以克隆现有的Git 仓库。一份克隆是一个完整的副本 (包括历史记录) 的Git 库。无论你怎么创建,现在都有了一个可以进行工作的Git库了。
克隆操作(Clone)
克隆是一个Git库的完整副本。例如,您可能会克隆了一份Git库,修复了一些 bug,然后向Git库提交代码。当然你需要对Git库具有写权限。
叉子操作(Fork)
叉子操作是从Git主库拷贝到你个人账户下的Git库,这样就不能直接对Git主库进行直接更新,而是先更新个人的副本,然后再提交一个拉请求(pull request),请求更改Git主库。这种功能经常用于开放源码项目,那里许多合作者帮助作者处理问题,但作者决定何时将它们包括在主分支。
拉请求(Pull Request)
拉请求是向Git库作者请求把你对叉来的Git库的更改合并到Git主库中。这个操作通常是由代码库合作者协助处理问题时使用。
分支(Branches)
一个分支是一套完整的库文件。Git 默认情况下将创建一个主分支。你可以创建更多的分支,在不会影响主分支的情况下,尝试更多的思路。
常见的分支可能包括︰
- 功能分支(Feature branch)︰ 一支致力于向代码库中添加新功能
- 发布分支(Release branch)︰ 用于计划下一个版本
- 主分支(Master branch)︰ 所有代码最终获取都合并到主分支
- 开发分支(Dev branch)︰ 活跃的开发分支,在代码正在工作
当然如何创建分支由你决定。然而如果很多合作者来参与项目,分支结构会令开发工作更加顺畅,并且不影响到主分支的构建,
被跟踪文件(Tracked files)
被跟踪文件是 Git 管理的工作目录 (存储库) 中的文件。当你添加新文件或使更新现有文件时,Git都会跟踪这些文件变化。在某个时间点,你将通过命令将这些文件提交到Git库中。
提交(Commit)
提交操作是把对被跟踪文件的变更添加到Git库的过程。你需要填写总结和说明,然后将文件添加到Git库中。Git 将维护所有对存储库提交的历史记录。
提交说明(Commit message)
提交说明是针对当前要提交的一组文件的总结和描述。
合并(Merging)
合并是将代码从一个分支融合到另一个分支的过程。当在一个分支中完成了对代码的修改和完善,通常会希望回代码合并主分支。Git 提供显示代码更改的鉴别工具,协助合并过程。
变更集(Change Sets)
Git 可以让您查看当前分支下所有的文件改变。你可以查看所做的更改,并决定哪个文件更改您想提交到分支。
例如,您可能已完成的工作是五个变更文件中的两个,需要单独提交这两个文件。你提交了这两个文件,Git会记录这个历史操作,并继续跟踪其他文件的变动。这使您可以创建逻辑变更集,而不是简单地基于日期的更改。
提交记录(Commit history)
Git 记录所有已提交的更改的日志,以便你可以检查之前的所有的变更。如果你克隆一个Git库,也会同时也拷贝了提交记录。
总结
基本的 Git 流程是创建一个Git库,做些更改和添加操作,然后,以变更集方式进行提交。Git 将报告被跟踪文件的更改,让你来决定如何组织提交。一旦完成了一些提交,你就可以查看Git的提交记录检查项目状态。