引言:为什么要有版本控制器
在多人协作、快速迭代的开发过程中,代码像流水一样不停变更:今天加了新功能,明天又回滚,后天同事把文件改得面目全非。
如果没有版本控制,我们将面临:
- 无法追溯"昨天到底改了哪一行"
- 合并代码全靠 U 盘/网盘/QQ 传文件
- 一不小心把能跑的版本覆盖,欲哭无泪
版本控制器(VCS, Version Control System)应运而生:它像一台"时光机",让我们随时查看历史、回滚代码、并行开发、自动合并。

@[toc]
一、版本控制器是什么
一句话:记录文件随时间变化的历史,并支持多人协作的系统 。
常见分类:
类型 | 特点 | 代表 |
---|---|---|
本地 VCS | 单机历史记录,无协作 | RCS |
集中式 VCS | 单一服务器,所有人连它 | SVN、CVS |
分布式 VCS | 每个开发者本地都有完整仓库 | Git、Mercurial |
二、从版本控制到 Git:历史与设计哲学
2.1 Git 的诞生八卦
- 2002 年以前,Linux 内核社区用 BitKeeper 做版本控制。
- 2005 年,BitKeeper 不再免费,Linus Torvalds 一怒之下花两周写出了 Git(据说是传言)
- 设计目标:速度极快、分布式、强分支、能管超大项目(如内核)。
2.2 去中心化(Distributed)的魅力
集中式(SVN) | 分布式(Git) |
---|---|
断网即停工 | 本地就能 commit |
服务器挂掉全完 | 任意节点都是备份 |
分支=昂贵操作 | 分支=秒建秒删 |
三、Git 安装:CentOS & Ubuntu 双指南
3.1 验证是否已安装
bash
git --version # 输出示例:git version 2.43.0
which git # 查看路径:/usr/bin/git
3.2 CentOS / RHEL 系列
bash
sudo yum install -y git # CentOS 7
sudo dnf install -y git # CentOS 8 / Rocky / Alma
3.3 Ubuntu / Debian 系列
bash
sudo apt update
sudo apt install -y git
3.4 安装后配置(仅需一次)
bash
git config --global user.name "YourName"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main # 新仓库默认分支名
四、在 Gitee 注册与创建仓库
国内访问 GitHub 速度慢,且容易崩。建议更换国内平替,用 Gitee(码云) 一样玩转 Git。(这里不是广告,如果gitee看到建议打钱(狗头))
-
打开 gitee.com → 注册/登录。
-
右上角「+」→ 新建仓库
- 仓库名称:
demo-git-linux
- 公开 / 私有:自选
- 勾选「使用 README 初始化」→ 创建。
- 仓库名称:
-
复制仓库地址(HTTPS / SSH 均可)备用:
bash
https://gitee.com/yourname/demo-git-linux.git
五、Git 日常操作:三板斧 + 必会套路
5.1 克隆仓库到本地
bash
cd ~/workspace
git clone https://gitee.com/yourname/demo-git-linux.git
cd demo-git-linux

5.2 本地仓库三板斧
步骤 | 命令 | 作用 |
---|---|---|
① 工作区 → 暂存区 | git add . |
把改动加入"购物车" |
② 暂存区 → 本地仓库 | git commit -m "feat: 新增进度条" |
写提交说明 |
③ 本地仓库 → 远端 | git push -u origin main |
第一次推送加 -u |
![]() |
5.3 完整示例:第一次提交
bash
echo "# Linux Git 实践" > README.md
git add README.md
git commit -m "docs: 初始化 README"
git push origin main
5.4 分支开发流程
bash
git checkout -b feature-progress-bar # 新建并切换到功能分支
# ... 写代码 ...
git add .
git commit -m "feat: 实现 CLI 进度条"
git push origin feature-progress-bar
在 Gitee 网页发起 Pull Request → 审核 → 合并到 main
。
六、踩坑指南:.gitignore & 冲突解决
6.1 .gitignore
:让垃圾文件远离仓库
常见写法(项目根目录新建 .gitignore
):
gitignore
# 编译产物
*.o
*.out
*.exe
# IDE/编辑器
.vscode/
.idea/
*.swp
# 日志、临时文件
*.log
*.tmp
规则:一行一个模式 ,支持
*
、?
、/**/
通配。
6.2 冲突(Conflict)产生与解决
场景:你和同事改了同一行代码,远端比你新。
报错信息:
css
! [rejected] main -> main (fetch first)
hint: Updates were rejected because the remote contains work ...
解决四连:
bash
git pull origin main # 拉取最新
# 如果提示冲突,编辑冲突文件 <<<<<<< ======= >>>>>>> 区域
git add .
git commit -m "fix: 解决合并冲突"
git push origin main
结语:让 Git 成为肌肉记忆
- 每日备份 :下班前
git push
,防止硬盘爆炸。 - 小步快跑:一次 commit 只做一件事,历史更清晰。
- 分支思维:新功能 = 新分支,再也不怕把主分支玩坏。
Git 不是银弹,但它是程序员时光机 + 团队协作神器。
把本文收藏,跟着敲一遍,你也能从 Git 小白进阶为老司机!
附录:常用速查表
场景 | 命令 |
---|---|
查看状态 | git status |
查看历史 | git log --oneline --graph --decorate |
回滚版本 | git reset --hard <commit-id> |
临时保存 | git stash / git stash pop |
配置别名 | git config --global alias.lg "log --oneline --graph" |
欢迎在评论区交流踩坑故事,祝你玩得开心!