Git 是代码的”时光机 + 多人协作”工具。不想背命令?先装图形工具 SourceTree(sourcetreeapp.com)点鼠标就能用;也可用 VS Code 内置 Git 面板或 GitHub Desktop,更简单。下面按你会遇到的场景来学。
场景1:怎么拿到代码?
- 已有本地仓库想更新 →
git pull - 从头下载 →
git clone https://xxx.git
场景2:怎么改代码?
① 切到分支 git checkout 分支名 → ② 编辑器里改 → ③ 放进暂存区 git add → ④ 提交 git commit → ⑤ 推送 git push
场景3:怎么合并代码?
① 确保暂存区干净(改动要么提交、要么 git stash 存起来)→ ② 切到目标分支 git checkout B → ③ 合并 git merge A → ④ 有冲突先解决再 git commit → ⑤ git push
场景4:合并冲突怎么办?
- 格式化引起的大量冲突:和队友约定同一个格式化工具(如 Prettier);合并前先统一格式化并提交再合。
- 业务代码真冲突:先排除格式化因素,再找对应代码作者确认”哪段要、哪段不要”,手动合。
场景5:推送后发现代码有错,怎么让队友拿到正确版本?
- (不推荐)强制覆盖:通知队友先别推,本地改对后
git push --force。缺点:会丢历史,已拉取的队友要回退/重克隆。 - (推荐)补一次提交:直接改好,再
git commit提交一版即可。
场景6:想知道某行代码是谁、什么时候改的?
用 git blame 文件名:会逐行显示”这行是哪次提交、哪个人、什么时候”改的。
图形工具更直观:SourceTree / VS Code 里对着文件右键选 “Blame / 注释” 即可,不用记命令。
场景7:想对比现在和以前的代码差别?
- 改了还没提交,看改了啥 →
git diff - 和上一次提交对比 →
git diff HEAD - 看某个文件的历次改动 →
git log -p 文件名
图形工具里点两个版本直接左右对比,最省事。
场景8:两个项目要同时维护同一个模块?
把这个公共模块抽成一个独立仓库,再用 子模块 git submodule add https://模块仓库.git 在两个项目里各引用一份。以后模块改了,在模块仓库提交一次,两个项目各自更新引用即可——一处修改、两处同步,不用复制粘贴。
场景9:三个月前的提交有 bug,只想回退那一部分?
别整体回退(会把后面的好代码也带没)。
– 先 git log 找到出问题的那次提交的编号;
– 只撤销那一次改动、保留历史 → git revert <提交编号>;
– 只想还原某个文件到旧版本 → git checkout <提交编号> -- 文件名。
场景10:只想从别的分支挑几个功能过来(不整分支合并)?
用 git cherry-pick <提交编号>:像”摘樱桃”一样,从别的分支挑出你要的那几次提交,单独搬到当前分支。适合”生产分支只想提前上测试分支里的某个功能”这种情况。
场景11:怎么更优雅地管理代码?
- 分支规范:
main放稳定可上线的、dev日常开发、每个新功能开一个feature/xxx分支,做完再合回去。 - 提交规范:一次提交只做一件事,提交信息写清楚”改了什么”。
- 用
.gitignore:把不该进仓库的(密钥、node_modules、编译产物)挡在外面。 - 合并前先
git pull拿最新 + 跑一遍测试,减少冲突和事故。
附:远程仓库怎么建、怎么和本地关联
① 在 GitHub / Gitee 建仓库:登录 → New repository(新建仓库)→ 填个名字 → 创建(新手建议不要勾“初始化 README”,空仓库更好关联)。
② 把本地代码推上去(在你项目文件夹里依次执行):
git init
git remote add origin https://你的仓库地址.git
git add .
git commit -m "init"
git push -u origin main
以后再改,重复”改 → git add → git commit → git push“就行。

发表回复