Git 状态查看与提交

笔记/CICD/Git版本控制/Git 状态查看与提交

背景与动机#

提交代码前最重要的不是立刻 git add .,而是先弄清楚当前到底改了什么。

这一篇聚焦本地提交流程:

查看状态 -> 查看差异 -> 暂存变更 -> 再次确认 -> 提交

这条流程能减少两类常见问题:把无关文件提交进去,或者漏掉真正要提交的文件。

核心原理拆解#

1. git status:看仓库现在处于什么状态#

git status 用来查看当前仓库状态:

Terminal window
git status

重点关注三类信息:

  • 哪些文件被修改但还没暂存。
  • 哪些文件已经进入暂存区。
  • 当前分支是否领先或落后远程分支。

如果输出太长,可以用简洁模式:

Terminal window
git status -sb

简洁模式适合提交、拉取、切分支前快速确认当前状态。

2. git diff:看具体改了什么#

git diff 用来查看工作区中尚未暂存的变更:

Terminal window
git diff

查看已经暂存、准备提交的变更:

Terminal window
git diff --cached

查看某个文件的变更:

Terminal window
git diff -- path/to/file

提交前建议至少看一次 git diffgit diff --cached,避免把调试代码、临时配置或无关改动提交进去。

3. git add:把工作区变更放入暂存区#

添加单个文件:

Terminal window
git add <file>

添加当前目录下所有变更:

Terminal window
git add .

交互式选择要暂存的变更块:

Terminal window
git add -p

git add . 很方便,但也容易把无关文件一起放进去。更稳妥的做法是先用 git status 看范围,再按文件或按块暂存。

4. git commit:把暂存区保存成本地提交#

提交暂存区内容:

Terminal window
git commit -m "add user login api"

一次好的提交应该满足两个条件:

  • 只包含一个相对独立的意图。
  • 提交信息能说明“做了什么”,而不是只写 updatefix

如果刚提交完发现漏了文件,可以先补充暂存,再修改上一次提交:

Terminal window
git add <file>
git commit --amend

注意:已经推送给别人协作的提交,不要随意 --amend,否则会改写提交历史。

5. 工作区、暂存区、本地仓库流转图#

下面这张图可以帮助理解 addcommit 的位置:

编辑文件 -> git add -> git commit
工作区 -> 暂存区 -> 本地仓库

常见工作流示例#

提交一个功能改动#

Terminal window
git status -sb
git diff
git add <file>
git diff --cached
git commit -m "add login form"

这里的关键点是:git add 前看工作区差异,git commit 前看暂存区差异。

分块提交同一个文件#

Terminal window
git add -p
git diff --cached
git commit -m "refactor config loader"

当一个文件里同时包含多个意图时,git add -p 可以只选择其中一部分进入当前提交。

常见陷阱#

1. 把 git add . 当成无脑安全命令#

git add . 会把当前目录下很多变更都放入暂存区,可能包含临时文件、调试代码或无关格式化结果。

更稳妥的方式是:

Terminal window
git add <file>
git add -p

2. 暂存后不再检查#

git diff 默认只看未暂存变更。暂存后要看即将提交的内容,应使用:

Terminal window
git diff --cached

3. 提交信息太模糊#

updatefixchange 这类提交信息对未来排查问题帮助很小。提交信息至少要能看出变更目标。

一句话总结#

本地提交的核心流程是:先用 statusdiff 看清楚,再用 add 选择范围,最后用 commit 固化一次明确意图。

文章目录

文章目录