前言

很多人第一次学习 Git 时,都会有一种很奇怪的感觉。
命令似乎并不复杂:

git add
git commit
git push
git pull

看起来就那么几个。

但真正开始使用时,却总会遇到各种问题:

  • 文件为什么没有提交成功?
  • add 和 commit 到底有什么区别?
  • 为什么切换分支以后文件不见了?
  • 为什么会出现代码冲突?
  • 为什么 push 失败?

于是很多人慢慢开始觉得:

Git 很难。

其实 Git 真正难的,从来不是命令。

而是:

没有理解 Git 的工作逻辑。

如果只是机械地背命令,那么一旦项目稍微复杂一点,就很容易彻底混乱。

所以这篇文章不会像很多教程一样疯狂堆命令,而是会结合实际开发场景,带你真正理解:

  • Git 为什么会出现
  • Git 是如何管理代码的
  • Git 的核心工作流程
  • 常用命令到底在做什么
  • 分支为什么重要
  • 团队开发为什么一定离不开 Git

看完以后,你不仅能知道“怎么用”,更能理解“为什么这样用”。


一、为什么程序员一定要学习 Git?

在 Git 出现之前,很多开发者管理代码的方式其实非常原始。

电脑里经常会出现这样的文件夹:

项目最终版
项目最终版2
项目最终版_真的最终版
项目最终版_不要再改了

项目小的时候似乎还能勉强使用。

但随着功能越来越多,问题很快就会出现。

比如:

  • 昨天程序还能运行
  • 今天改了几行代码以后突然报错
  • 想恢复到昨天的状态,却不知道哪里改错了

再比如团队开发:

  • 文件被覆盖
  • 功能互相影响
  • 不知道谁改了什么
  • 项目版本越来越乱

这些问题,本质上都指向同一个需求:

我们需要一个工具,帮我们记录代码历史。

而 Git,就是为了解决这些问题诞生的。

你甚至可以把 Git 理解成:

代码世界里的“时光机”

因为它真的能够让代码回到过去。


二、Git 的核心工作流程(重点)

很多人学不会 Git,并不是因为命令难。

而是:

没有真正理解 Git 的工作流程。

Git 最核心的内容其实只有一句话:

工作区 → 暂存区 → 本地仓库

整个 Git 的运行逻辑,几乎都是围绕这三个区域展开的。


1、工作区(Working Directory)

工作区,其实就是你平时真正写代码的地方。

例如:

app.py
main.py
user.py

这些文件都属于工作区。

你新增代码、修改代码、删除代码,所有操作都会先发生在这里。

简单来说:

工作区 = 你正在开发的代码区域

2、暂存区(Stage)

这是很多新手最容易迷糊的地方。

很多人第一次学习 Git 时都会疑惑:

为什么不能直接 commit?
为什么还需要 add?

其实原因很简单。

Git 希望开发者能够:

“选择性提交代码”

例如:

你今天同时做了两件事:

  1. 修复登录 Bug
  2. 开发支付功能

但支付功能只写了一半。

现在你只想提交:

登录 Bug 修复

这时候:

git add

就非常重要。

因为它允许你:

只把需要提交的文件放进暂存区

而那些还没写完的功能,不会进入版本记录。


3、本地仓库(Repository)

只有执行:

git commit -m "完成登录功能"

Git 才会真正生成一个历史版本。

所以:

git add     → 准备提交
git commit  → 正式保存版本

你甚至可以把 commit 理解成:

给当前代码拍一张“快照”

以后无论代码怎么修改:

都可以回到这次提交时的状态。


4、Git 工作流程图

真正理解 Git,其实记住下面这个流程就够了:

工作区(写代码)
        ↓
git add
        ↓
暂存区(准备提交)
        ↓
git commit
        ↓
本地仓库(正式版本)

很多新手真正混乱的地方:

其实就在这里。


三、Git 常用命令与真实开发逻辑

理解了 Git 的工作流程以后,很多命令其实都会变得非常清晰。

这一部分不会只讲命令怎么写。

而是会告诉你:

这些命令在真实开发中到底有什么作用。


1、初始化 Git 仓库

在使用 Git 管理项目之前,需要先初始化仓库:

git init

执行以后,项目目录里会出现一个隐藏文件夹:

.git

这个目录非常重要。

因为里面保存了:

  • Git 历史记录
  • 分支信息
  • 提交版本
  • 仓库配置

你甚至可以把它理解成:

Git 的“大脑”

2、查看当前仓库状态

Git 使用频率最高的命令之一:

git status

它的作用非常简单:

查看当前仓库状态

很多开发者在实际开发时,都会频繁执行:

git status

来确认:

  • 哪些文件被修改
  • 哪些文件已经 add
  • 哪些文件还没提交

3、添加到暂存区

git add .

很多新手会误以为:

git add 就是提交代码

其实并不是。

它真正的作用是:

把修改内容加入暂存区

也就是告诉 Git:

这些代码已经准备提交了

但此时:

还没有真正生成版本记录

4、真正提交代码

git commit -m "提交说明"

这一步才是真正生成历史版本。

这里的提交说明非常重要。

很多新手喜欢写:

aaa
test
111

这种提交信息其实毫无意义。

更推荐这种写法:

修复登录接口报错
完成订单模块开发
优化数据库查询逻辑

因为以后查看历史记录时:

你需要快速知道:

这次提交到底修改了什么

5、查看代码修改

有时候:

你改着改着就忘了自己到底修改了什么。

这时候就可以使用:

git diff

它会清楚告诉你:

  • 哪一行发生了变化
  • 修改前是什么
  • 修改后是什么

这个命令在排查 Bug 时非常有用。


6、查看历史版本

git log

可以查看详细提交记录。

而:

git reflog

则会记录:

HEAD 指针的所有移动历史

即使你进行了版本回退:

也依然可以找回来。


7、版本回退(重点)

Git 最强大的功能之一:

就是:

代码可以回到过去

例如:

git reset --hard 版本号

执行以后:

代码会直接恢复到对应版本。

但这里也有一个非常容易踩坑的地方:

git reset --hard

会直接丢弃当前修改。

所以:

没有 commit 的代码,不要随便 hard reset。


四、Git 文件状态与常见问题

很多新手第一次使用 Git 时,会发现终端里出现:

  • 红色
  • 绿色

其实这些颜色,本质上是在提示文件状态。


1、红色

表示:

文件已经修改
但还没有 add

也就是:

文件仍然停留在工作区

2、绿色

表示:

文件已经 add
但还没有 commit

也就是:

文件已经进入暂存区

新手最容易犯的错误

很多人修改代码以后:

忘记 commit。

然后直接切换分支。

最后导致:

  • 文件混乱
  • 修改丢失
  • 分支冲突

所以一定要养成一个习惯:

修改代码以后,
及时 add 和 commit

五、Git 最强大的功能:分支开发

真正让 Git 强大的,其实并不是版本回退。

而是:

Branch(分支)

很多人第一次接触分支时会觉得特别抽象。

其实你可以简单理解成:

一份独立的代码副本

1、为什么需要分支?

假设现在:

项目已经上线。

但产品经理突然提出了一个新需求。

如果你直接在主代码上开发:

风险会非常大。

因为新功能可能影响线上系统。

于是 Git 提供了分支机制:

main  → 稳定版本
dev   → 开发版本

这样即使开发失败:

也不会影响线上代码。

这就是分支真正的意义:

隔离风险。


2、常用分支命令

查看分支:

git branch

创建分支:

git branch dev

切换分支:

git switch dev

创建并切换分支:

git switch -c login

合并分支:

git merge dev

3、分支结构示意图

main
 ├── dev
 │    ├── login
 │    ├── order
 │    └── payment

真实开发中:

每个功能通常都会单独开发。

这样能够避免不同功能互相影响。


六、为什么会出现代码冲突?

很多新手第一次看到 Git 冲突时都会慌。

但实际上:

冲突并不可怕

它产生的原因通常只有一个:

两个人同时修改了同一部分代码。

例如:

你修改:

name = "张三"

同事修改:

name = "李四"

Git 无法判断应该保留谁。

于是就会出现:

<<<<<<< HEAD
当前代码
=======
别人代码
>>>>>>> dev

看到这些符号不要慌。

你只需要:

  1. 手动保留正确代码
  2. 删除特殊符号
  3. 再次 add 和 commit

即可解决。


七、远程仓库与团队协作

前面学习的内容,其实都属于:

本地 Git

但真实开发中,一定会涉及多人协作。

于是就需要:

远程仓库

常见平台:

  • GitHub:适合开源项目
  • Gitee:国内访问速度更快
  • GitLab:很多公司内部使用

官方网站:


1、常用远程仓库命令

添加远程仓库:

git remote add origin 仓库地址

推送代码:

git push origin main

第一次推送通常需要:

git push -u origin main

拉取代码:

git pull origin main

克隆项目:

git clone 仓库地址

2、一个真实团队开发流程

真实开发其实更像这样:

1. 上班先 pull 最新代码
2. 创建自己的功能分支
3. 开发功能
4. git add
5. git commit
6. git push
7. 提交 Merge Request
8. Code Review
9. 合并到主分支

当项目开始多人协作以后:

Git 的意义才会真正体现出来。

因为它不仅是在管理代码。

更是在:

管理团队协作流程

八、如何真正学会 Git?

很多人学习 Git 时,总喜欢疯狂背命令。

但真正重要的,从来不是命令本身。

而是:

  • 理解 Git 工作流程
  • 理解版本控制思想
  • 理解分支开发模式
  • 理解团队协作流程

学习 Git 最好的方式:

从来不是死记硬背。

而是:

  • 自己创建仓库
  • 自己提交代码
  • 自己创建分支
  • 自己制造冲突
  • 自己解决冲突

很多人刚开始学习 Git 时,都会被各种命令吓到。

但真正工作以后你会发现:

Git 从来不是为了增加开发难度。

恰恰相反。

它是在项目越来越复杂时,帮助程序员建立一种:

可回退、可协作、可追踪

的开发习惯。

而这也是:

程序员工程化思维的一部分
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐