Git 入门教程

Git 是目前最常用的分布式版本控制工具,主要用于管理代码历史、多人协作开发和版本回退。

很多人刚接触 Git 时,会觉得命令很多、概念很乱,比如工作区、暂存区、分支、合并、冲突这些词经常一起出现。其实只要先理解日常开发最常见的流程,再去记命令,会容易很多。

这篇文章不再单纯列命令表,而是从实际使用场景出发,讲清楚 Git 在日常开发里最常见的用法。

Git 能做什么

最常见的作用主要有这几个:

  • 记录每一次代码修改
  • 和其他人一起协作开发同一个项目
  • 创建分支开发新功能,不影响主分支
  • 出现问题时回退到之前的版本
  • 在代码冲突时比较并合并修改内容

简单理解,Git 就像代码的时间机器,也像多人协作时的版本记录系统。

开始之前先理解 3 个概念

工作区

工作区就是你当前正在编辑的项目目录。

你改动文件之后,这些变化最开始只存在于工作区,还没有正式进入 Git 的提交记录。

暂存区

暂存区可以理解为“准备提交的区域”。

当你执行 git add 后,文件会先进入暂存区,等你确认没问题,再执行 git commit 提交到版本历史中。

提交记录

提交记录就是 Git 真正保存下来的版本快照。

每次 git commit,都会生成一个新的历史节点,后面就可以查看、比较、回退。

最常见的日常工作流程

正常开发里,最常见的一套流程其实很固定。

1. 先拉取最新代码

1
git pull

这样做的目的是先同步远程最新内容,避免你在旧代码上继续开发,后面合并时更容易冲突。

2. 新建一个功能分支

1
git switch -c feature/demo

很多团队不会直接在 main 分支上改代码,而是先切一个新分支开发。

这样做的好处是:

  • 主分支更稳定
  • 新功能相互隔离
  • 出问题时更容易回滚

3. 修改代码后查看状态

1
git status

这个命令非常常用。

它可以告诉你:

  • 哪些文件被修改了
  • 哪些文件已经加入暂存区
  • 当前分支是什么
  • 有没有文件还没有被 Git 跟踪

4. 把文件加入暂存区

1
git add .

如果你只想提交某一个文件,也可以写成:

1
git add 文件名

5. 提交本次修改

1
git commit -m "add demo feature"

一次提交最好只表达一个明确动作,比如修复 bug、增加功能、修改文案等,这样后面查历史会清楚很多。

6. 推送到远程仓库

1
git push -u origin feature/demo

第一次推送分支时通常要加 -u,这样后面再 push 就可以直接用 git push

分支为什么重要

Git 里面分支是很核心的功能。

你可以把分支理解成一条独立的开发线。

比如:

  • main:正式稳定版本
  • dev:开发版本
  • feature/login:登录功能分支
  • hotfix/bug-001:紧急修复分支

这样每个人都可以在自己的分支上开发,最后再合并回主分支。

查看分支

1
git branch

切换分支

1
git switch main

合并分支

1
git merge feature/demo

合并的意思就是把另一个分支上的修改合并到当前分支。

冲突是怎么出现的

冲突通常发生在下面这种场景:

  • 你修改了某个文件的一段内容
  • 其他人也修改了同一个位置
  • Git 在合并时不知道该保留哪一份

这时候就会出现冲突。

一个典型场景

你先执行:

1
git pull

如果 Git 提示冲突,先别慌,先看状态:

1
git status

Git 会告诉你哪些文件冲突了。

打开冲突文件后,通常会看到这种标记:

1
2
3
4
5
<<<<<<< HEAD
这是你本地的内容
=======
这是远程分支的内容
>>>>>>> main

你需要自己判断最终保留什么内容,然后把这些冲突标记删掉。

处理完成后,再执行:

1
2
git add 冲突文件
git commit -m "resolve conflict"

如果你不想继续这次合并,也可以直接取消:

1
git merge --abort

什么情况下会用到 stash

有时候你代码写到一半,突然要先去修一个紧急问题,但当前修改又不想立刻提交,这时候就很适合用 stash

临时保存当前修改

1
git stash

然后就可以切换分支:

1
git switch main

事情处理完,再回原分支恢复:

1
2
git switch 原分支
git stash pop

这个场景在日常开发里非常常见。

回退和撤销怎么理解

Git 里很多人最容易混淆的就是回退。

撤销刚刚的提交,但保留代码

1
git reset --soft HEAD~1

适合这种情况:

  • 提交信息写错了
  • 刚刚那次提交还想重新整理一下
  • 代码还想保留,不想丢失

撤销已经推送出去的提交

1
git revert 提交ID

这个命令更安全,因为它不是直接删历史,而是新增一次“反向提交”来抵消之前的修改。

如果是多人协作项目,已经 push 的内容通常更推荐用 revert,而不是直接强行改历史。

危险操作要特别注意

Git 有一些命令很好用,但也很容易把本地内容直接删掉。

强制回退到远程版本

1
2
git fetch origin
git reset --hard origin/main

这个操作的效果是:

  • 当前分支直接和远程 main 对齐
  • 本地未保存修改会被丢弃

如果还继续执行:

1
git clean -fd

那连未被 Git 跟踪的文件和目录也会被一起删除。

所以像 reset --hardclean -fdpush --force 这类命令,执行前最好先确认一次。

给新手的建议

如果你刚开始学 Git,不要一上来死记所有命令。

先把下面这几个用熟:

  • git status
  • git add
  • git commit
  • git pull
  • git push
  • git switch
  • git merge
  • git stash
  • git revert

先理解它们分别解决什么问题,再逐渐接触更复杂的操作,会更容易建立自己的 Git 使用习惯。

总结

Git 的核心并不在于命令多,而在于理解代码从“修改”到“提交”再到“协作合并”的整个过程。

一旦你把工作区、暂存区、提交记录、分支和冲突这些概念串起来,很多命令自然就不难记了。

对于大多数日常开发来说,真正高频使用的操作并不多,掌握最常见的工作流程,已经足够应付大部分场景。