什么是 Git?

Git 已成为版本控制的全球标准。 那么,它究竟是什么?

Git 是一种分布式版本控制系统,即,代码的本地克隆就是一个完整的版本控制存储库。 通过这些功能齐全的本地存储库,无论脱机还是远程都能轻松工作。 开发人员会在本地提交其工作,然后再将存储库的副本与服务器上的副本进行同步。 这种范例不同于集中式版本控制,后者要求客户端必须先与服务器同步代码,然后才能创建新版代码。

Git 的灵活性和受欢迎程度使其成为所有团队的绝佳选择。 很多开发人员和大学毕业生都已知道如何使用 Git。 Git 的用户社区创建了各种资源来训练开发人员,而 Git 的受欢迎程度也使得在需要时可轻松获得帮助。 几乎每个开发环境都有在各大主流操作系统上实现的 Git 支持和 Git 命令行工具。

Git 基本知识

每次保存工作时,Git 都会创建提交。 提交是指某个时间点所有文件的快照。 如果文件未从一个提交更改为下一提交,Git 则会使用先前存储的文件。 此设计不同于其他系统,此类系统会存储文件的初始版本并随着时间推移保留增量记录。

Linear graph of development in Git

提交会创建指向其他提交的链接,从而形成一个开发历史记录图。 可将代码还原到以前的提交,检测文件如何从一个提交更改为下一提交,以及查看更改出现的位置和时间等信息。 提交可通过提交内容的唯一加密哈希在 Git 中进行标识。 由于所有内容均经过哈希处理,因此在未检测到 Git 的情况下不会进行更改、丢失信息或损坏文件。

分支

每个开发人员都将更改保存到自己的本地代码存储库中。 因此,基于同一提交可能会有许多不同的更改。 Git 提供了用于隔离更改并在以后将它们重新合并在一起的工具。 分支是指正在进行的工作的轻量级指针,它可用于管理此类分离。 在分支中创建的工作完成后,可以合并回团队的主分支(或主干)。

Commits on a branch

文件和提交

Git 中的文件处于以下三种状态之一:已修改、已暂存或已提交。 首次修改文件时,更改仅存在于工作目录中。 它们尚不属于提交或开发历史记录。 开发人员必须暂存要包含在提交中的已更改文件。 暂存区域包含要纳入下一提交的所有更改。 开发人员对已暂存文件感到满意后,这些文件将打包为提交,并附带描述更改内容的消息。 此提交将成为开发历史记录的一部分。

file_status_lifecycle-2

通过暂存,开发人员可选择要在提交中保存的文件更改,以便将大型更改分解为一系列较小的提交。 通过减少提交范围,可更轻松地查看提交历史记录,从而查找特定文件更改。

Git 的优点

Git 的优点很多。

同步开发

每个人都有自己的本地代码副本,且可在自己的分支上同时工作。 Git 可脱机工作,因为几乎所有操作均为本地操作。

更快的发布

分支允许灵活且同时进行开发。 主分支包含要在其中发布的高质量稳定代码。 功能分支包含正在进行的工作,而这些工作在完成后会合并到主分支中。 通过将发布分支与正在进行的开发分离,可以更轻松地管理稳定的代码并更快地交付更新。

内置集成

由于其受欢迎程度,Git 已集成到大多数工具和产品中。 每个主要 IDE 都有内置的 Git 支持,同时很多工具都支持与 Git 的以下集成:持续集成、持续部署、自动测试、工作项跟踪、指标和报告功能集成。 此集成可简化日常工作流。

强大的社区支持

Git 是开源工具,且已成为版本控制的事实标准。 团队可利用的工具和资源堪称完备。 与其他版本控制系统相比,针对 Git 的社区支持量使其在需要时可轻松获得帮助。

Git 适用于所有团队

通过鼓励协作、强制实施策略、自动执行流程以及提高工作的可见性和可追溯性,将 Git 与源代码管理工具结合使用可提高团队的工作效率。 团队可确定用于版本控制、工作项跟踪以及持续集成和部署的各个工具。 或者,他们可选择一个解决方案,例如 GitHubAzure DevOps 从而集中支持所有这些任务。

拉取请求

在将代码更改合并到主分支之前,请使用拉取请求与团队探讨代码更改。 拉取请求中的讨论对于确保代码质量和丰富团队间的知识堪称无价。 GitHub 和 Azure DevOps 等平台提供了丰富的拉取请求体验,开发人员可在其中浏览文件更改、进行批注、检测提交、查看内部版本以及为批准代码而投票。

分支策略

团队可配置 GitHub 和 Azure DevOps,以在整个团队中强制实施一致的工作流和流程。 他们可设置分支策略,从而确保拉取请求能满足完成前的要求。 分支策略可通过防止直接推送、要求审阅者并确保纯净的内部版本来保护重要分支。

后续步骤

安装并设置 Git