告别原始人式版本控制#
在软件开发过程中,我们经常需要修改代码、保存历史版本、多人协作以及处理不同功能之间的合并问题。
如果没有版本控制工具,项目目录可能会变成这样:
project_v1.0
project_v2.0_最终版
project_v2.1_最终绝对不改版
project_v3.0_再改我是狗这种方式不仅占地方,而且一旦代码崩了,根本不知道是谁在什么时候改了哪一行。而 Git,就是为了彻底终结这个混乱局面而诞生的分布式版本控制系统。
分布式版本控制系统用于记录文件内容的变化,让开发者能够查看历史版本、比较修改内容、恢复文件状态,并进行多人协作。
Git 最常用于管理源代码,但它也可以管理:
- 技术文档;
- 配置文件;
- Markdown 笔记;
- 脚本文件;
- 静态网站;
- 任何适合文本版本管理的项目。
什么是版本控制#
假设一个项目经历了以下开发过程:
创建项目
↓
完成功能 A
↓
接入接口 B
↓
修复异常 C
↓
增加功能 D每完成一个阶段,都可以使用 Git 保存一个版本。
这些版本被称为提交,也就是 Commit。
每次提交都会记录:
- 修改了哪些文件;
- 增加了哪些内容;
- 删除了哪些内容;
- 谁进行了修改;
- 什么时间进行了修改;
- 本次修改的说明。
因此,一个 Git 仓库不仅保存当前代码,还保存完整的修改历史。
笔记
更厉害的是,Git 支持“多分支并行开发”。你可以拉出一个分支去开发测试新功能,如果不喜欢,直接删掉分支读档;如果觉得很棒,就把这条时间线合并回主线。
Git 的主要功能#
记录版本历史#
开发者可以把当前修改保存为一次提交:
git commit -m "完成功能 A"查看代码变化#
可以查看文件具体修改了什么:
git diff恢复历史版本#
如果新代码出现问题,可以恢复到之前的状态:
git restore 文件名也可以撤销某次提交:
git revert 提交哈希使用分支并行开发#
不同功能可以在不同分支中开发:
# 创建一个名为 feature/login 的新分支,并立即切换到这个分支。
git switch -c feature/login登录功能不会直接影响主分支中的正式代码。
支持多人协作#
团队成员可以从远程仓库获取代码:
git pull也可以把本地提交上传到远程仓库:
git push什么是分布式版本控制系统(分散式版本控制系统)#
传统的集中式版本控制系统通常依赖一个中央服务器。
如果中央服务器不可用,开发者可能无法查看完整历史或创建版本。
Git 是分布式版本控制系统。每个开发者克隆仓库后,本地通常都会保存:
- 完整的项目文件;
- 完整的提交历史;
- 分支信息;
- 标签信息;
- 仓库对象。
即使暂时没有网络,也可以在本地执行:
git status # 查看工作区和暂存区的当前状态
git add # 将修改添加到暂存区
git commit # 将暂存区内容提交到本地仓库
git log # 查看提交历史
git branch # 查看或管理分支只有与远程仓库同步时才需要网络。
更详细的分布式版本控制与集中式版本控制系统的对比可以参考中文维基 分散式版本控制