改完代码想留个存档,Git 提交最短的路径就是 git add → git commit → git push。真正容易翻车的不是命令本身,而是提交前没看状态、提交信息乱写、推送前不拉取。下面按顺序走一遍,每一步都写清在哪敲、敲完屏幕上会出现什么。
先分清四个位置,知道命令在动谁
- 工作区:你正在编辑的文件,改完还没登记
- 暂存区:
git add之后被挑出来、准备提交的内容
- 本地仓库:
git commit之后形成的存档
- 远程仓库:
git push之后同事也能拉到的版本
代码版本管理说到底是让改动在这四层之间有序流动。分不清这四个位置,命令很容易敲反,比如 commit 完才发现文件根本没 add。
随时敲 git status 看当前位置。输出里 Changes not staged for commit 是改了没 add,Changes to be committed 是已进暂存区、等着 commit,nothing to commit, working tree clean 说明当前没有待提交内容。
第一步:Git 提交前先看状态和差异
- 终端
cd到项目根目录,敲git status。
- 对着红字列表逐条确认:这些改动是不是这次要提交的。
- 敲
git diff看具体改了哪几行;已经 add 过的用git diff --staged。
- 文件多的时候用
git status -s,两列短标记,一屏能看完。
如果列表里冒出 .DS_Store、node_modules/、dist/ 这类不该进仓库的东西,先别 add,回头把它们写进 .gitignore。

第二步:把改动放进暂存区
- 只提交一个文件:
git add src/login.js
- 提交全部改动:
git add .,一定在项目根目录敲,在子目录敲只会加当前目录
- 只想提交文件里的部分改动:
git add -p,终端会一段段问y/n,适合一次改了好几件事、想拆开提交的情况
git add . 最省事也最容易误伤,本地调试用的配置文件经常就这么被带进去。加错了想撤回:git restore --staged 文件名,改动本身还在工作区,只是退出暂存。
第三步:写提交信息并 commit
命令:git commit -m "修复:登录页验证码不刷新"
提交信息比用什么工具更影响以后查历史:
- 一句话说清改了什么,控制在 20 字上下
- 动词开头:修复、新增、调整、删除、重构
- 别写
update、修改一下、111,三个月后自己都看不懂
- 一次提交只做一件事,改了三件事就分三次提交
提交完发现信息打错:git commit --amend -m "新的说明",只对最近一次、还没推送的提交有效。

第四步:推送前先拉一次,再 push
- 敲
git pull --rebase,团队习惯 merge 就敲git pull
- 有冲突时文件里会出现
<<<<<<<、=======、>>>>>>>三种标记,改完保留正确内容、删掉标记
git add 冲突文件,然后git rebase --continue
git push
新分支第一次推送要指定上游:git push -u origin feature/login,之后直接 git push 就行。看到 Everything up-to-date 或者 branch 'xxx' set up to track 'origin/xxx' 就是成功了。
命令行还是图形客户端,按场景挑
- 命令行:远程服务器上只有它;每一步在动什么看得最清楚,撤销、变基这类操作也只有它完整
- VS Code 源代码管理面板:日常小改动最顺手,侧边栏点 + 号等于 add,填框写信息再点勾就是 commit
- GitHub Desktop、Sourcetree:新手过渡期友好,冲突可视化处理;但 rebase、reset 回退这类操作藏得深,或干脆没有
限制说清楚:图形客户端省的是记忆成本,不省判断成本。真要撤销一次错误提交,还是得回命令行。
五个常见坑和补救命令
- 提交了密钥或密码文件:
git rm --cached .env并写进.gitignore;已经推到远端的,光删文件不够,得轮换密钥。
- 提交到错误分支:还没推送时
git reset --soft HEAD~1撤回提交、保留改动,切到正确分支后重新 add、commit。
- push 被拒,提示
non-fast-forward:远端有新提交,先git pull --rebase再推。
- 想丢掉工作区改动:
git restore 文件名,这一步不可恢复,敲之前看清楚。
- 想看最近改了什么:
git log --oneline -10,一行一条,找提交最快的入口。
免费与付费边界:本地 Git 完全免费;GitHub、Gitee 这类托管平台免费账号能建私有仓库,团队权限、CI 分钟数有免费额度上限,超出按各自官网价格计费,具体数字以官网为准。
常见问题(FAQ)
Q:commit 之后还能改提交信息吗?
能。git commit --amend -m "新信息" 改最近一次;已推送的还要配合 git push --force-with-lease,多人共用的分支上慎用。
Q:commit 和 push 到底差在哪?
commit 只写进本地仓库,断网也能做;push 才把本地提交同步到远端,需要网络和仓库权限。
Q:每次都用 git add . 有什么风险?
临时文件、日志、密钥容易被一起打包提交。至少先用 git status 扫一眼,并提前把 .env、node_modules/、dist/ 写进 .gitignore。
Q:分支改乱了怎么退回上一个版本?
只想撤提交、保留改动:git reset --soft HEAD~1;连改动一起丢:git reset --hard HEAD~1。后者会删掉没提交的内容,执行前先 git status 确认。
把 status、add、commit、push 这四步固定成习惯,代码版本管理基本不会出大问题。
最后更新:2026-10-23(工具界面、价格与政策可能调整,请以官方页面为准)。