Git 入门教程
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 | <<<<<<< HEAD |
你需要自己判断最终保留什么内容,然后把这些冲突标记删掉。
处理完成后,再执行:
1 | git add 冲突文件 |
如果你不想继续这次合并,也可以直接取消:
1 | git merge --abort |
什么情况下会用到 stash
有时候你代码写到一半,突然要先去修一个紧急问题,但当前修改又不想立刻提交,这时候就很适合用 stash。
临时保存当前修改
1 | git stash |
然后就可以切换分支:
1 | git switch main |
事情处理完,再回原分支恢复:
1 | git switch 原分支 |
这个场景在日常开发里非常常见。
回退和撤销怎么理解
Git 里很多人最容易混淆的就是回退。
撤销刚刚的提交,但保留代码
1 | git reset --soft HEAD~1 |
适合这种情况:
- 提交信息写错了
- 刚刚那次提交还想重新整理一下
- 代码还想保留,不想丢失
撤销已经推送出去的提交
1 | git revert 提交ID |
这个命令更安全,因为它不是直接删历史,而是新增一次“反向提交”来抵消之前的修改。
如果是多人协作项目,已经 push 的内容通常更推荐用 revert,而不是直接强行改历史。
危险操作要特别注意
Git 有一些命令很好用,但也很容易把本地内容直接删掉。
强制回退到远程版本
1 | git fetch origin |
这个操作的效果是:
- 当前分支直接和远程
main对齐 - 本地未保存修改会被丢弃
如果还继续执行:
1 | git clean -fd |
那连未被 Git 跟踪的文件和目录也会被一起删除。
所以像 reset --hard、clean -fd、push --force 这类命令,执行前最好先确认一次。
给新手的建议
如果你刚开始学 Git,不要一上来死记所有命令。
先把下面这几个用熟:
git statusgit addgit commitgit pullgit pushgit switchgit mergegit stashgit revert
先理解它们分别解决什么问题,再逐渐接触更复杂的操作,会更容易建立自己的 Git 使用习惯。
总结
Git 的核心并不在于命令多,而在于理解代码从“修改”到“提交”再到“协作合并”的整个过程。
一旦你把工作区、暂存区、提交记录、分支和冲突这些概念串起来,很多命令自然就不难记了。
对于大多数日常开发来说,真正高频使用的操作并不多,掌握最常见的工作流程,已经足够应付大部分场景。


