很多人学 Git,卡在两个点:

  1. 命令背了不少,但不知道什么时候该用哪一个。
  2. 真到团队协作(分支、冲突、合并、回滚)就慌。

这篇文章不讲空话,只讲实战。你看完后至少可以做到三件事:

  • 独立管理自己的开发版本
  • 参与团队协作不拖后腿
  • 出问题时知道怎么安全“救火”

1. 先搞懂 Git 到底在做什么

你可以把 Git 理解成一个“可回溯的时间机器”:

  • 工作区(Working Directory):你当前正在改的文件
  • 暂存区(Staging Area):准备提交的变更清单
  • 本地仓库(Local Repository):你本地保存的历史版本
  • 远程仓库(Remote Repository):团队共享的版本库(如 GitHub)

最关键的一句话:
先 add(放入暂存区),再 commit(形成历史版本)


2. 从 0 开始:一个项目最小 Git 流程

2.1 初始化并首次提交

1
2
3
git init
git add .
git commit -m "feat: 初始化项目"

2.2 关联远程并推送

1
2
3
git remote add origin <你的仓库地址>
git branch -M main
git push -u origin main

以后推送只需:

1
git push

3. 新手每天都会用到的 8 个命令

3.1 git status(最高频)

看当前状态:哪些文件改了、哪些在暂存区、当前在哪个分支。

1
git status

3.2 git add(选择要提交的内容)

1
2
git add .           # 全部加入暂存区
git add src/a.js # 只加一个文件

3.3 git commit(形成历史节点)

1
git commit -m "fix: 修复登录按钮无响应问题"

3.4 git log(看历史)

1
git log --oneline --graph --decorate

3.5 git pull(同步远程)

1
git pull

3.6 git push(上传本地提交)

1
git push

3.7 git branch(看分支)

1
2
git branch
git branch -a # 包括远程分支

3.8 git switch(切分支)

1
2
git switch -c feature/login-page   # 新建并切换
git switch main # 切回 main

4. 团队开发标准流程(最实用)

下面是推荐给新手直接照做的流程:

第一步:先更新主分支

1
2
git switch main
git pull

第二步:从主分支拉功能分支

1
git switch -c feature/user-profile

第三步:开发 + 小步提交

1
2
3
4
git add .
git commit -m "feat: 完成用户资料页基础布局"
git add .
git commit -m "feat: 接入用户信息接口"

第四步:推到远程

1
git push -u origin feature/user-profile

第五步:发起 PR(合并请求)

在平台(GitHub/GitLab)上创建 PR,等待代码评审。

第六步:合并后清理分支

1
2
3
git switch main
git pull
git branch -d feature/user-profile

原则:不要直接在 main 上开发业务功能


5. 冲突不可怕:三步解决

冲突常见于你和同事改了同一段代码。

场景:你在功能分支,想合并主分支最新代码

1
2
git switch feature/user-profile
git pull origin main

若出现冲突,Git 会在文件里标出:

1
2
3
4
5
<<<<<<< HEAD
你的代码
=======
对方代码
>>>>>>> main

解决步骤

  1. 手动编辑文件,决定保留哪部分(或合并两者)
  2. 标记冲突已解决:git add <冲突文件>
  3. 完成提交:git commit -m "fix: 解决与main分支的合并冲突"

6. 回滚与“后悔药”命令(建议收藏)

6.1 改乱了但还没 add

1
git restore <文件名>

6.2 已经 add 了,但不想暂存

1
git restore --staged <文件名>

6.3 提交信息写错(只改最后一次提交信息)

1
git commit --amend -m "新的提交信息"

6.4 想回到某个历史提交(谨慎)

1
git reset --hard <commit_id>

--hard 会丢失未保存修改,团队环境慎用。优先考虑 revert

6.5 安全撤销某次提交(推荐团队用)

1
git revert <commit_id>

它不会改写历史,而是新建一个“反向提交”,更安全。


7. 必备习惯:让你协作体验提升 10 倍

7.1 写清晰的提交信息

推荐格式:类型: 描述

  • feat: 新功能
  • fix: 修复问题
  • refactor: 重构
  • docs: 文档
  • style: 样式
  • chore: 杂务

示例:

  • feat: 新增订单筛选功能
  • fix: 修复移动端菜单遮挡问题

7.2 小步提交,不要憋“大招”

一天一次 3000 行提交,非常难审查,也难回滚。建议每完成一个小功能就提交一次。

7.3 提交前先自检

至少做三件事:

  • 跑通项目
  • git diff 是否包含无关改动
  • 不要把密钥、密码、node_modules 提交上去

8. .gitignore 新手常见配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 依赖目录
node_modules/

# 构建产物
dist/
build/

# 环境变量
.env
.env.*

# 日志
*.log

# IDE 文件
.vscode/
.idea/

9. 一套你可以今天就用的“日常操作清单”

每天开始开发:

1
2
3
git switch main
git pull
git switch -c feature/你的功能名

开发中(循环):

1
2
3
git status
git add .
git commit -m "feat: ..."

下班前或功能完成:

1
git push

发起 PR 后:

  • 看 CI 是否通过
  • 根据 review 修改并补提交
  • 合并后删除本地功能分支

10. Git 速查命令表(建议收藏)

场景 命令 说明
查看当前改动 git status 先看状态,再做操作
查看改动内容 git diff 看工作区改了什么
仅查看已暂存改动 git diff --staged 提交前自检很有用
暂存全部文件 git add . 把当前目录改动加入暂存区
提交代码 git commit -m "feat: ..." 形成可回溯版本
查看简洁历史 git log --oneline --graph --decorate 快速看分支与提交关系
拉取远程更新 git pull 同步远程最新代码
推送本地提交 git push 上传到远程仓库
新建并切换分支 git switch -c feature/xxx 功能开发标准操作
切回主分支 git switch main 合并、同步前常用
删除本地分支 git branch -d feature/xxx 功能合并后清理
取消工作区改动 git restore <文件> 还原未暂存的修改
取消暂存 git restore --staged <文件> 把文件从暂存区撤回
安全撤销某次提交 git revert <commit_id> 团队协作推荐,不改写历史
回到某次提交(危险) git reset --hard <commit_id> 会丢改动,谨慎使用

一行口诀

status,再操作;先分支,再开发;小步提交,出错可回滚。

11. 团队协作禁忌清单(10 条)

  1. 不要直接在 main 分支写业务代码
  2. 不要一次提交大量无关改动(代码、格式化、配置改动混在一起)。
  3. 不要提交前不看 git diff,避免把临时调试代码一起带上去。
  4. 不要把密钥、密码、.env 提交到仓库
  5. 不要跳过代码评审就合并,再小的改动也可能引发线上问题。
  6. 不要长期不同步主分支,越晚合并冲突越难解。
  7. 不要写“update/fix bug”这种无效提交信息,别人根本看不懂你改了什么。
  8. 不要在冲突没看懂时乱删标记就提交,先理解两边逻辑再合并。
  9. 不要滥用 git reset --hard,团队协作优先用 git revert
  10. 不要把构建产物和依赖目录提交到仓库(如 dist/node_modules/)。

12. 给新手的最后建议

你不需要一周学完 Git 所有命令。真正重要的是:

  1. 先把这篇里的核心流程跑通 3 次
  2. 每次出错都先看 git status
  3. 在团队里坚持“功能分支 + PR + 小步提交”

当你能稳定完成这三点,你已经超过很多“只会背命令”的人了。