一旦我们决定了要在项目中使用 Git, 首先要做的第一步就是为其 Git 版本库分配相应 的文件与目录。这一步的重点是我们要决定被版本化的项目是要用单一版本库还是多个版本库。由于Git 版本库中只能创建分支和标签,这在很大程度上也等于是在决定该项目的发布单元。
待划分完项目后,我们还得要为每个模块建立相应的版本库并对其进行填充。当然,空目录与尚未被版本化的文件会被特殊对待。
在进行团队协作时,我们还必须要为各模块定义一个*版本库。团队中的所有开发者都将优先从该*版本库里获取当前的状态并记录下他们的修改。
另外,我们还必须要决定团队中所有开发者能以什么方式访问*版本库。Git 支持各种访问方式,例如通过共享网络设备、Web 服务器,以及某种专有网络协议和安全壳架构协议 (即 SSH) 来访问等。
至于我们究竟要选择哪一种协议,这取决于我们自身现有的基础架构、本地布局情况、以及所拥有的管理员权限。
上述工作流应具体包含如下内容。
- 如何将项目目录转换成一个版本库。
- 如何版本化空目录。
- 如何处理行尾终止问题。
- *版本库有哪些服访问选项可用,它们应该如何设置。
- 团队成员应该如何访问*版本库。
该工作流将由两个步骤组成。在第一步中,我们要为自己的项目目录创建相应的版本库。而在第二步中,我们要为所有的开发者提供一个可用的*版本库。
在下图中,我们将会看到一个名为 projecta 的项目是如何被转换成版本库的。这其中, 特别要注意一个名为 EmptyDir
的空目录,因为 Git 通常是不会将空目录纳入版本控制的。你可以通过在该空目录中创建一个文件(例如.gitignore
文件)的方式强制 Git 将该目录纳入版本控制。
同样地,我们也应该要确保自己在第一次提交时没有将一些不该被版本化的文件放入版本库,例如一些构建结果和临时文件。在这个例子中,我们可以看到这些文件都被存放在 TempDir
目录中。另外,备份文件所在的存储目录也不应该被纳入版本控制。为了在未来的 提交中排除这个目录,我们应该在项目的根目录中创建一个.gitignore
文件,并在该文件中指定要忽略的目录。
下面进入第二步,我们现在要将新建的版本库提供给其他开发者使用。到目前为止, Git 支持了几种不同协议的变体。
-
file
: 经由共享网络设备访问的协议。 -
git
: 专用服务器服务的网络通信协议。 -
http
: 经由 Web 服务器访问的协议。 -
ssh
: 经由安全壳架构访问的协议。
在 Git 中,对于同一版本库的多点访问是可以并行部署的。在实际例子中,我们常常会 为匿名读取访问配置 HTTP 协议,而为写访问配置 SSH 协议。