Git 提交代码怎么做?改完到推送的完整流程

改完代码想留个存档,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 提交前先看状态和差异

  1. 终端 cd 到项目根目录,敲 git status。
  1. 对着红字列表逐条确认:这些改动是不是这次要提交的。
  1. 敲 git diff 看具体改了哪几行;已经 add 过的用 git diff --staged。
  1. 文件多的时候用 git status -s,两列短标记,一屏能看完。

如果列表里冒出 .DS_Store、node_modules/、dist/ 这类不该进仓库的东西,先别 add,回头把它们写进 .gitignore。

终端执行 git status 查看代码改动状态、准备 Git 提交的界面截图
git status 的红绿两色,分别对应未暂存和已暂存

第二步:把改动放进暂存区

  • 只提交一个文件: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 "新的说明",只对最近一次、还没推送的提交有效。

git commit -m 命令输入提交信息的终端示例截图
提交信息用动词开头,一眼看出这次改了什么

第四步:推送前先拉一次,再 push

  1. 敲 git pull --rebase,团队习惯 merge 就敲 git pull
  1. 有冲突时文件里会出现 <<<<<<<、=======、>>>>>>> 三种标记,改完保留正确内容、删掉标记
  1. git add 冲突文件,然后 git rebase --continue
  1. 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(工具界面、价格与政策可能调整,请以官方页面为准)。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...