<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>命令速查 on 鹿鸣青野的blog</title><link>https://www.sylgalaxy.xyz/tags/%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5/</link><description>Recent content in 命令速查 on 鹿鸣青野的blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 25 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.sylgalaxy.xyz/tags/%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5/index.xml" rel="self" type="application/rss+xml"/><item><title>最常用 Git 命令速查：三区模型、场景命令表与五个坑</title><link>https://www.sylgalaxy.xyz/posts/git-essential-commands/</link><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.sylgalaxy.xyz/posts/git-essential-commands/</guid><description>&lt;blockquote&gt;
&lt;p&gt;适用人群：Git 零基础起步，以日常笔记仓库为练习场。
主线：先记住「三区模型」，命令自然就懂了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-核心要点先建立三区心智模型"&gt;1. 核心要点：先建立「三区」心智模型&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;核心要点&lt;/strong&gt;：90% 的 Git 疑惑都源于不知道「文件现在在哪个区」。Git 有三个区域——&lt;strong&gt;工作区 → 暂存区 → 本地仓库&lt;/strong&gt;，再加一个&lt;strong&gt;远程仓库&lt;/strong&gt;。所有常用命令本质上就是在这些区之间搬东西。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;工作区 暂存区 本地仓库 远程仓库
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(你编辑的文件) (git add 后) (git commit 后) (GitHub 等)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ git add │ git commit │ git push │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├──────────────▶├─────────────────▶ ├───────────────────▶ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │◀──────────────┤◀───────────────── ├── ◀─────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ git restore │ │ git fetch / pull │
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;区&lt;/th&gt;
&lt;th&gt;是什么&lt;/th&gt;
&lt;th&gt;对应命令&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;工作区&lt;/td&gt;
&lt;td&gt;你正在编辑的目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git status&lt;/code&gt; 里红色的文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;暂存区&lt;/td&gt;
&lt;td&gt;下次 commit 要打包的内容&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git add&lt;/code&gt; 之后变绿色的文件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;本地仓库&lt;/td&gt;
&lt;td&gt;已提交的历史（&lt;code&gt;.git/&lt;/code&gt; 目录）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git log&lt;/code&gt; 能看到的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;远程仓库&lt;/td&gt;
&lt;td&gt;别人/其他机器上的副本&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git push&lt;/code&gt; / &lt;code&gt;git pull&lt;/code&gt; 打交道&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="2-常用命令速查表按场景"&gt;2. 常用命令速查表（按场景）&lt;/h2&gt;
&lt;h3 id="21-首次配置与建仓"&gt;2.1 首次配置与建仓&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;备注&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git config --global user.name &amp;quot;xxx&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;设置全局用户名&lt;/td&gt;
&lt;td&gt;提交记录会显示它&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git config --global user.email &amp;quot;xxx@xx.com&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;设置全局邮箱&lt;/td&gt;
&lt;td&gt;GitHub 用它关联头像/贡献图&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;当前目录变成 Git 仓库&lt;/td&gt;
&lt;td&gt;生成隐藏的 &lt;code&gt;.git/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;克隆远程仓库到本地&lt;/td&gt;
&lt;td&gt;自带远程连接&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="22-日常四件套用得最多"&gt;2.2 日常四件套（用得最多）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;看当前状态：哪些改了、哪些暂存了（&lt;strong&gt;最常打&lt;/strong&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt; / &lt;code&gt;git add .&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;把文件放入暂存区；&lt;code&gt;.&lt;/code&gt; 表示全部&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git commit -m &amp;quot;说明&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;把暂存区内容打包成一次提交&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git log --oneline&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;一行一条看提交历史&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-查看差异与历史"&gt;2.3 查看差异与历史&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;工作区 vs 暂存区的改动&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git diff --staged&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;暂存区 vs 上次提交的改动&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git show &amp;lt;commit&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;看某次提交的具体内容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git blame &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;看文件每行是谁、哪次提交写的&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="24-撤销与回退救火"&gt;2.4 撤销与回退（救火）&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;危险度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git restore &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;丢弃工作区改动（未 add）&lt;/td&gt;
&lt;td&gt;⚠️ 改动不可恢复&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git restore --staged &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;取消暂存（add 反悔），保留改动&lt;/td&gt;
&lt;td&gt;安全&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git reset --soft HEAD~1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;撤销上次 commit，&lt;strong&gt;保留&lt;/strong&gt;改动在暂存区&lt;/td&gt;
&lt;td&gt;安全，改说明重提最常用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git revert &amp;lt;commit&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;生成一个「反向提交」抵消指定提交&lt;/td&gt;
&lt;td&gt;✅ 最安全，适合已 push 的场景&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="25-分支"&gt;2.5 分支&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;列出本地分支，&lt;code&gt;*&lt;/code&gt; 标记当前分支&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git branch &amp;lt;名字&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;新建分支（不切换）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git switch &amp;lt;名字&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;切换分支&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git switch -c &amp;lt;名字&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;新建并切换（= &lt;code&gt;-b&lt;/code&gt;）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git merge &amp;lt;分支&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;把指定分支合并进当前分支&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git branch -d &amp;lt;名字&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;删除已合并的分支&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="26-远程协作"&gt;2.6 远程协作&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;看远程仓库名和地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git remote add origin &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;关联一个远程仓库&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git push -u origin main&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;首次推送并建立跟踪关系&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;推送（之后简写即可）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git fetch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;只下载远程更新，不合并（先看看再说）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;下载并合并 = &lt;code&gt;fetch&lt;/code&gt; + &lt;code&gt;merge&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="3-高频组合拳"&gt;3. 高频组合拳&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 场景1:日常保存进度(写笔记的标准流程)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git status &lt;span style="color:#75715e"&gt;# 先看有什么变动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add path/to/note.md &lt;span style="color:#75715e"&gt;# 只加想提交的文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;feat(模块): 添加 xx 笔记&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 场景2:commit 说明写错了,想重写&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git reset --soft HEAD~1 &lt;span style="color:#75715e"&gt;# 退回但保留改动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;正确的说明&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 场景3:某个文件改坏了,恢复到最后一次提交的状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git restore 文件名
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 场景4:push 被拒(远程有新提交)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git pull &lt;span style="color:#75715e"&gt;# 先拉下来合并&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push &lt;span style="color:#75715e"&gt;# 再推&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 场景5:实验性改动,开个分支玩&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git switch -c try-something
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# ...随便折腾...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git switch main &lt;span style="color:#75715e"&gt;# main 完全不受影响&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-常见坑与误区"&gt;4. 常见坑与误区&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;⚠️ &lt;strong&gt;坑 1：把不该提交的文件 add 进去了&lt;/strong&gt;（如编辑器/助手的本地配置、进度笔记等本地配置层）
→ 现象：&lt;code&gt;git status&lt;/code&gt; 里出现不想推的文件。
→ 原因：&lt;code&gt;git add .&lt;/code&gt; 会把所有文件一网打尽。
→ 正确写法：精确指定文件名来 add；长期排除则写进 &lt;code&gt;.gitignore&lt;/code&gt;；已被跟踪的用 &lt;code&gt;git rm --cached 文件名&lt;/code&gt; 取消跟踪（本地文件保留）。&lt;/p&gt;</description></item></channel></rss>