【Linux指南】Linux 环境下 Git 从 0 到 1:手把手带你玩转版本控制

引言:为什么要有版本控制器

在多人协作、快速迭代的开发过程中,代码像流水一样不停变更:今天加了新功能,明天又回滚,后天同事把文件改得面目全非。

如果没有版本控制,我们将面临:

  • 无法追溯"昨天到底改了哪一行"
  • 合并代码全靠 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看到建议打钱(狗头))

  1. 打开 gitee.com → 注册/登录。

  2. 右上角「+」→ 新建仓库

    • 仓库名称:demo-git-linux
    • 公开 / 私有:自选
    • 勾选「使用 README 初始化」→ 创建。
  3. 复制仓库地址(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"

欢迎在评论区交流踩坑故事,祝你玩得开心!

相关推荐
路溪非溪11 小时前
Linux驱动开发重要操作汇总
linux·运维·驱动开发
Coision.12 小时前
硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器
linux·嵌入式硬件·51单片机
wydxry13 小时前
Linux 系统上配置 GitHub 账号并克隆私有仓库
linux·github
青草地溪水旁15 小时前
66多路复用 I/O 函数——`select`函数
linux·socket编程·i/o复用
轻松Ai享生活15 小时前
5 天学习 Linux Kernel 主要原理 | Day 2:Linux 进程管理与调度
linux
轻松Ai享生活15 小时前
5 天学习 Linux Kernel 主要原理 | Day 1:Linux 内核基础与架构总览
linux
哈喽H16 小时前
centos系统的linux环境不同用户,环境变量不同如何配置?
linux·centos
Doris_LMS17 小时前
在Linux系统中安装Jenkins(保姆级别)
java·linux·jenkins·ci
轻松Ai享生活17 小时前
用户自定义的 systemd unit 文件应该放在哪里?
linux
万添裁17 小时前
1.Linux:命令提示符,history和常用快捷键
linux·运维·服务器