切换·Esc 返回

提交Commit

Git 专区
把这次代码改动保存成一个以后能找回的版本

完成一个小改动并确认可以运行后,可以把它记录成一次 commit。以后能看到当时改了什么,也能以它为节点比较或恢复版本;commit 默认先保存在本地。

工作区index.html 改好了 git add 暂存区这次要记的改动 git commit 本地仓库 git push 远程仓库还没上传
$ git add index.html && git commit -m "完成首页导航栏"
改动先装进暂存区,commit 把它写成一条本地存档(编号如 a3f9c21),说明写「做了什么」。commit 只存本地,上传到远程要靠 git push。

什么时候用

  • 按 status、diff、add、再次检查的顺序准备一次提交
    git diff 看改动git add 选改动git commit 记入历史
  • 说明写「做了什么」:完成导航栏、修复按钮错位,一眼能看懂
    ● 完成首页导航栏
    ● 修复按钮在手机上错位
    写「做了什么」,一眼看懂
  • AI 每完成一个小任务就 commit:能跑就存档,别攒着
    每个稳定小步都可以成为一次提交
  • 常看 git log --oneline:一行一个存档点,回滚前先认门牌
    $ git log --onelinee7b2d48 修复按钮在手机上错位a3f9c21 完成首页导航栏0f1e2d3 初始化项目

什么时候不用

  • 攒了一周的改动一次大包 commit:出问题只能整包回滚,好改动也陪葬
    37 个文件、一周的改动塞成一包
    出问题只能整包回滚,好改动也陪葬
  • 说明写「改了文件」而不是「做了什么」:改了哪些文件 Git 本来就记着
    ● 修改 index.html
    ● 改了 style.css
    改了哪些文件 Git 自己会记,说明要写做了什么
  • 把本地 commit 当成远程备份;上传还需要推送 Push
    💻 本地 ●●●●☁️ 空的
    只 commit 不 push,电脑一坏全没了
  • 把包含真实密钥的 .env 记录进提交历史
    .envgit push →☁️
    密钥会进入远程提交历史
组成结构 · Anatomy
a3f9c21完成首页导航栏oil-oil · 2 files changed · 2 小时前
1存档编号Hash每个 commit 的唯一编号;命令里可以使用足以区分的短前缀,界面常显示前 7~12 位
2存档说明Message写「做了什么」而不是「改了文件」,将来的你靠它找存档
3作者与改动量Meta谁存的、动了几个文件、什么时候存的,Git 自动记录
常见变体 · Variants
选择改动git add
git add index.html
指定下一次 commit 要记录的改动
正式存档git commit
git commit -m "说明"
每完成一个小任务就存一次
翻看存档git log
git log --oneline
一行一个存档点,回滚前先看
看看现状git status
git status
不确定改了哪些文件,先问它
典型使用场景
终端里 add + commit
zsh — my-first-page
$ git add index.html $ git commit -m "修复按钮在手机上错位" [main e7b2d48] 修复按钮在手机上错位 1 file changed, 6 insertions(+), 3 deletions(-)
VS Code 源代码管理面板
源代码管理 2
消息(按 ⌘Enter 提交)
更改
📄 index.htmlM
📄 style.cssM
✓ 提交
⑂ main* ⊘ 0 ⚠ 0
git log 翻存档点
zsh — my-first-page
$ git log --oneline e7b2d48 修复按钮在手机上错位 a3f9c21 完成首页导航栏 b4c5d67 首页能跑了 0f1e2d3 初始化项目 前面 7 位是存档编号,回滚时认它
GitHub 看一次 commit 的 diff
完成首页导航栏
oil-oil committed 2 小时前 a3f9c21
📄 index.html +48 -5
- <nav>旧导航</nav>
+ <nav class="top-nav">新导航</nav>
 <main>…</main>