很多人学 Git,卡在两个点:
- 命令背了不少,但不知道什么时候该用哪一个。
- 真到团队协作(分支、冲突、合并、回滚)就慌。
这篇文章不讲空话,只讲实战。你看完后至少可以做到三件事:
- 独立管理自己的开发版本
- 参与团队协作不拖后腿
- 出问题时知道怎么安全“救火”
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
|
以后推送只需:
3. 新手每天都会用到的 8 个命令
3.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(同步远程)
3.6 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
|
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
|
解决步骤
- 手动编辑文件,决定保留哪部分(或合并两者)
- 标记冲突已解决:
git add <冲突文件>
- 完成提交:
git commit -m "fix: 解决与main分支的合并冲突"
6. 回滚与“后悔药”命令(建议收藏)
6.1 改乱了但还没 add
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 安全撤销某次提交(推荐团队用)
它不会改写历史,而是新建一个“反向提交”,更安全。
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: ..."
|
下班前或功能完成:
发起 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 条)
- 不要直接在
main 分支写业务代码。
- 不要一次提交大量无关改动(代码、格式化、配置改动混在一起)。
- 不要提交前不看
git diff,避免把临时调试代码一起带上去。
- 不要把密钥、密码、
.env 提交到仓库。
- 不要跳过代码评审就合并,再小的改动也可能引发线上问题。
- 不要长期不同步主分支,越晚合并冲突越难解。
- 不要写“update/fix bug”这种无效提交信息,别人根本看不懂你改了什么。
- 不要在冲突没看懂时乱删标记就提交,先理解两边逻辑再合并。
- 不要滥用
git reset --hard,团队协作优先用 git revert。
- 不要把构建产物和依赖目录提交到仓库(如
dist/、node_modules/)。
12. 给新手的最后建议
你不需要一周学完 Git 所有命令。真正重要的是:
- 先把这篇里的核心流程跑通 3 次
- 每次出错都先看
git status
- 在团队里坚持“功能分支 + PR + 小步提交”
当你能稳定完成这三点,你已经超过很多“只会背命令”的人了。