<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>版本控制 on XEDCZQ的博客</title><link>https://xedczq.cn/tags/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/</link><description>Recent content in 版本控制 on XEDCZQ的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 14 Jul 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://xedczq.cn/tags/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 基础用法笔记：常用命令与含义</title><link>https://xedczq.cn/post/git_basicusage/</link><pubDate>Tue, 14 Jul 2026 10:00:00 +0800</pubDate><guid>https://xedczq.cn/post/git_basicusage/</guid><description>&lt;p&gt;Git 是一个版本控制工具，用来记录代码或文档的修改历史。它最核心的价值是：知道改了什么、什么时候改的、为什么改，以及在需要时回到之前的版本。&lt;/p&gt;
&lt;p&gt;这篇笔记按日常使用顺序整理 Git 的基础命令。&lt;/p&gt;
&lt;h2 id="一git-的几个基本概念"&gt;&lt;a href="#%e4%b8%80git-%e7%9a%84%e5%87%a0%e4%b8%aa%e5%9f%ba%e6%9c%ac%e6%a6%82%e5%bf%b5" class="header-anchor"&gt;&lt;/a&gt;一、Git 的几个基本概念
&lt;/h2&gt;&lt;p&gt;在使用命令之前，先理解几个常见概念。&lt;/p&gt;
&lt;h3 id="工作区"&gt;&lt;a href="#%e5%b7%a5%e4%bd%9c%e5%8c%ba" class="header-anchor"&gt;&lt;/a&gt;工作区
&lt;/h3&gt;&lt;p&gt;工作区就是你当前正在编辑的项目目录。&lt;/p&gt;
&lt;p&gt;例如你在本地修改了一个 &lt;code&gt;README.md&lt;/code&gt;，这个修改一开始就在工作区里。&lt;/p&gt;
&lt;h3 id="暂存区"&gt;&lt;a href="#%e6%9a%82%e5%ad%98%e5%8c%ba" class="header-anchor"&gt;&lt;/a&gt;暂存区
&lt;/h3&gt;&lt;p&gt;暂存区可以理解成“准备提交的改动清单”。&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;git add&lt;/code&gt; 后，文件修改会进入暂存区。&lt;/p&gt;
&lt;h3 id="本地仓库"&gt;&lt;a href="#%e6%9c%ac%e5%9c%b0%e4%bb%93%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;本地仓库
&lt;/h3&gt;&lt;p&gt;本地仓库保存了你的提交历史。&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;git commit&lt;/code&gt; 后，暂存区里的修改会变成一次正式提交，进入本地仓库。&lt;/p&gt;
&lt;h3 id="远程仓库"&gt;&lt;a href="#%e8%bf%9c%e7%a8%8b%e4%bb%93%e5%ba%93" class="header-anchor"&gt;&lt;/a&gt;远程仓库
&lt;/h3&gt;&lt;p&gt;远程仓库一般是 GitHub、GitLab、Gitee 或公司代码平台上的仓库。&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;git push&lt;/code&gt; 可以把本地提交推送到远程仓库。&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;git pull&lt;/code&gt; 可以把远程仓库的新内容拉到本地。&lt;/p&gt;
&lt;h2 id="二初始化与克隆项目"&gt;&lt;a href="#%e4%ba%8c%e5%88%9d%e5%a7%8b%e5%8c%96%e4%b8%8e%e5%85%8b%e9%9a%86%e9%a1%b9%e7%9b%ae" class="header-anchor"&gt;&lt;/a&gt;二、初始化与克隆项目
&lt;/h2&gt;&lt;h3 id="git-init"&gt;&lt;a href="#git-init" class="header-anchor"&gt;&lt;/a&gt;git init
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把当前目录初始化成一个 Git 仓库。&lt;/p&gt;
&lt;p&gt;适合自己新建项目时使用。执行后，目录里会出现一个隐藏的 &lt;code&gt;.git&lt;/code&gt; 文件夹，Git 的版本记录就保存在这里。&lt;/p&gt;
&lt;h3 id="git-clone"&gt;&lt;a href="#git-clone" class="header-anchor"&gt;&lt;/a&gt;git clone
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone 仓库地址
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/user/project.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：从远程仓库下载一份完整项目到本地。&lt;/p&gt;
&lt;p&gt;适合参与已有项目时使用。&lt;/p&gt;
&lt;h2 id="三查看当前状态"&gt;&lt;a href="#%e4%b8%89%e6%9f%a5%e7%9c%8b%e5%bd%93%e5%89%8d%e7%8a%b6%e6%80%81" class="header-anchor"&gt;&lt;/a&gt;三、查看当前状态
&lt;/h2&gt;&lt;h3 id="git-status"&gt;&lt;a href="#git-status" class="header-anchor"&gt;&lt;/a&gt;git status
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：查看当前仓库状态。&lt;/p&gt;
&lt;p&gt;它会告诉你：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些文件被修改了&lt;/li&gt;
&lt;li&gt;哪些文件还没有被 Git 跟踪&lt;/li&gt;
&lt;li&gt;哪些文件已经进入暂存区&lt;/li&gt;
&lt;li&gt;当前在哪个分支&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是 Git 里最常用的命令之一。每次提交前都建议先执行一次。&lt;/p&gt;
&lt;h3 id="git-diff"&gt;&lt;a href="#git-diff" class="header-anchor"&gt;&lt;/a&gt;git diff
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：查看工作区里还没有暂存的具体修改。&lt;/p&gt;
&lt;p&gt;简单说，就是看你改了哪些内容，但这些内容还没有执行 &lt;code&gt;git add&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="git-diff-staged"&gt;&lt;a href="#git-diff-staged" class="header-anchor"&gt;&lt;/a&gt;git diff &amp;ndash;staged
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git diff --staged
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：查看已经暂存、准备提交的具体修改。&lt;/p&gt;
&lt;p&gt;执行 &lt;code&gt;git add&lt;/code&gt; 后，如果想确认即将提交的内容，可以用这个命令。&lt;/p&gt;
&lt;h2 id="四暂存修改"&gt;&lt;a href="#%e5%9b%9b%e6%9a%82%e5%ad%98%e4%bf%ae%e6%94%b9" class="header-anchor"&gt;&lt;/a&gt;四、暂存修改
&lt;/h2&gt;&lt;h3 id="git-add-文件名"&gt;&lt;a href="#git-add-%e6%96%87%e4%bb%b6%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;git add 文件名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add README.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把指定文件的修改加入暂存区。&lt;/p&gt;
&lt;h3 id="git-add-"&gt;&lt;a href="#git-add-" class="header-anchor"&gt;&lt;/a&gt;git add .
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把当前目录下所有修改加入暂存区。&lt;/p&gt;
&lt;p&gt;它会暂存新增、修改和删除的文件。使用前最好先执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确认没有把不该提交的文件也加进去。&lt;/p&gt;
&lt;h2 id="五提交修改"&gt;&lt;a href="#%e4%ba%94%e6%8f%90%e4%ba%a4%e4%bf%ae%e6%94%b9" class="header-anchor"&gt;&lt;/a&gt;五、提交修改
&lt;/h2&gt;&lt;h3 id="git-commit"&gt;&lt;a href="#git-commit" class="header-anchor"&gt;&lt;/a&gt;git commit
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;提交说明&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;添加 Git 基础用法笔记&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把暂存区里的内容提交到本地仓库，形成一次版本记录。&lt;/p&gt;
&lt;p&gt;提交说明要尽量写清楚“这次改了什么”。以后查看历史时，好的提交说明会很有用。&lt;/p&gt;
&lt;h2 id="六查看提交历史"&gt;&lt;a href="#%e5%85%ad%e6%9f%a5%e7%9c%8b%e6%8f%90%e4%ba%a4%e5%8e%86%e5%8f%b2" class="header-anchor"&gt;&lt;/a&gt;六、查看提交历史
&lt;/h2&gt;&lt;h3 id="git-log"&gt;&lt;a href="#git-log" class="header-anchor"&gt;&lt;/a&gt;git log
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：查看完整提交历史。&lt;/p&gt;
&lt;p&gt;它会显示提交 ID、作者、日期和提交说明。&lt;/p&gt;
&lt;h3 id="git-log-oneline"&gt;&lt;a href="#git-log-oneline" class="header-anchor"&gt;&lt;/a&gt;git log &amp;ndash;oneline
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git log --oneline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：用一行显示一次提交，适合快速浏览历史。&lt;/p&gt;
&lt;p&gt;示例输出可能是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;a1b2c3d 添加 Git 基础用法笔记
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;e4f5g6h 修改 footer 样式
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="七远程仓库操作"&gt;&lt;a href="#%e4%b8%83%e8%bf%9c%e7%a8%8b%e4%bb%93%e5%ba%93%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;七、远程仓库操作
&lt;/h2&gt;&lt;h3 id="git-remote--v"&gt;&lt;a href="#git-remote--v" class="header-anchor"&gt;&lt;/a&gt;git remote -v
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：查看当前项目关联的远程仓库地址。&lt;/p&gt;
&lt;p&gt;通常远程仓库默认名字叫 &lt;code&gt;origin&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="git-remote-add"&gt;&lt;a href="#git-remote-add" class="header-anchor"&gt;&lt;/a&gt;git remote add
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote add origin 仓库地址
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote add origin https://github.com/user/project.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：给本地仓库添加一个远程仓库地址。&lt;/p&gt;
&lt;h3 id="git-pull"&gt;&lt;a href="#git-pull" class="header-anchor"&gt;&lt;/a&gt;git pull
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：从远程仓库拉取最新代码，并合并到当前分支。&lt;/p&gt;
&lt;p&gt;开始写代码前，建议先执行一次 &lt;code&gt;git pull&lt;/code&gt;，避免本地代码落后太多。&lt;/p&gt;
&lt;h3 id="git-push"&gt;&lt;a href="#git-push" class="header-anchor"&gt;&lt;/a&gt;git push
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把本地提交推送到远程仓库。&lt;/p&gt;
&lt;p&gt;如果是新分支第一次推送，常用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push -u origin 分支名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;-u&lt;/code&gt; 的作用是建立本地分支和远程分支的默认关联。之后再推送这个分支时，直接执行 &lt;code&gt;git push&lt;/code&gt; 就可以。&lt;/p&gt;
&lt;h2 id="八分支操作"&gt;&lt;a href="#%e5%85%ab%e5%88%86%e6%94%af%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;八、分支操作
&lt;/h2&gt;&lt;p&gt;分支可以理解成一条独立的开发线。写新功能或修复问题时，通常会新建一个分支，避免直接影响主分支。&lt;/p&gt;
&lt;h3 id="git-branch"&gt;&lt;a href="#git-branch" class="header-anchor"&gt;&lt;/a&gt;git branch
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git branch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：查看本地分支列表。&lt;/p&gt;
&lt;p&gt;当前所在分支前面会有一个 &lt;code&gt;*&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="git-branch-分支名"&gt;&lt;a href="#git-branch-%e5%88%86%e6%94%af%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;git branch 分支名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git branch feature-login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：创建一个新分支。&lt;/p&gt;
&lt;p&gt;注意：这个命令只创建分支，不会自动切换过去。&lt;/p&gt;
&lt;h3 id="git-switch-分支名"&gt;&lt;a href="#git-switch-%e5%88%86%e6%94%af%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;git switch 分支名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch feature-login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：切换到指定分支。&lt;/p&gt;
&lt;h3 id="git-switch--c-分支名"&gt;&lt;a href="#git-switch--c-%e5%88%86%e6%94%af%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;git switch -c 分支名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch -c feature-login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：创建并切换到一个新分支。&lt;/p&gt;
&lt;p&gt;这是日常开发里很常用的写法。&lt;/p&gt;
&lt;h3 id="git-merge"&gt;&lt;a href="#git-merge" class="header-anchor"&gt;&lt;/a&gt;git merge
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git merge feature-login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把指定分支的修改合并到当前分支。&lt;/p&gt;
&lt;p&gt;例如你当前在 &lt;code&gt;main&lt;/code&gt; 分支，执行上面的命令，就是把 &lt;code&gt;feature-login&lt;/code&gt; 分支合并进 &lt;code&gt;main&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="九撤销与恢复"&gt;&lt;a href="#%e4%b9%9d%e6%92%a4%e9%94%80%e4%b8%8e%e6%81%a2%e5%a4%8d" class="header-anchor"&gt;&lt;/a&gt;九、撤销与恢复
&lt;/h2&gt;&lt;p&gt;撤销命令要谨慎使用。执行前最好先看一眼：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="git-restore-文件名"&gt;&lt;a href="#git-restore-%e6%96%87%e4%bb%b6%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;git restore 文件名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git restore README.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：撤销某个文件在工作区里的修改。&lt;/p&gt;
&lt;p&gt;注意：这个操作会丢弃还没有暂存的修改。&lt;/p&gt;
&lt;h3 id="git-restore-staged-文件名"&gt;&lt;a href="#git-restore-staged-%e6%96%87%e4%bb%b6%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;git restore &amp;ndash;staged 文件名
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git restore --staged README.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：把文件从暂存区移出来，但保留文件内容的修改。&lt;/p&gt;
&lt;p&gt;适合执行 &lt;code&gt;git add&lt;/code&gt; 后发现暂存错了文件。&lt;/p&gt;
&lt;h3 id="git-commit-amend"&gt;&lt;a href="#git-commit-amend" class="header-anchor"&gt;&lt;/a&gt;git commit &amp;ndash;amend
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit --amend -m &lt;span class="s2"&gt;&amp;#34;新的提交说明&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：修改最近一次提交。&lt;/p&gt;
&lt;p&gt;常见用途：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改最近一次提交说明&lt;/li&gt;
&lt;li&gt;把漏掉的文件补进最近一次提交&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这次提交已经推送到远程仓库，要谨慎使用。&lt;/p&gt;
&lt;h2 id="十常用完整流程"&gt;&lt;a href="#%e5%8d%81%e5%b8%b8%e7%94%a8%e5%ae%8c%e6%95%b4%e6%b5%81%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;十、常用完整流程
&lt;/h2&gt;&lt;h3 id="场景一修改已有项目并提交"&gt;&lt;a href="#%e5%9c%ba%e6%99%af%e4%b8%80%e4%bf%ae%e6%94%b9%e5%b7%b2%e6%9c%89%e9%a1%b9%e7%9b%ae%e5%b9%b6%e6%8f%90%e4%ba%a4" class="header-anchor"&gt;&lt;/a&gt;场景一：修改已有项目并提交
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;说明这次修改内容&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查看当前状态&lt;/li&gt;
&lt;li&gt;查看具体修改&lt;/li&gt;
&lt;li&gt;暂存所有修改&lt;/li&gt;
&lt;li&gt;再次确认暂存内容&lt;/li&gt;
&lt;li&gt;提交到本地仓库&lt;/li&gt;
&lt;li&gt;推送到远程仓库&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="场景二新建分支开发功能"&gt;&lt;a href="#%e5%9c%ba%e6%99%af%e4%ba%8c%e6%96%b0%e5%bb%ba%e5%88%86%e6%94%af%e5%bc%80%e5%8f%91%e5%8a%9f%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;场景二：新建分支开发功能
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch -c feature-demo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;添加 demo 功能&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push -u origin feature-demo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;含义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先同步远程最新代码&lt;/li&gt;
&lt;li&gt;创建并切换到新分支&lt;/li&gt;
&lt;li&gt;暂存修改&lt;/li&gt;
&lt;li&gt;提交修改&lt;/li&gt;
&lt;li&gt;推送新分支到远程仓库&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="场景三只想看自己改了什么"&gt;&lt;a href="#%e5%9c%ba%e6%99%af%e4%b8%89%e5%8f%aa%e6%83%b3%e7%9c%8b%e8%87%aa%e5%b7%b1%e6%94%b9%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;场景三：只想看自己改了什么
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这是最安全的查看方式，不会改动任何文件。&lt;/p&gt;
&lt;h2 id="十一常见命令速查表"&gt;&lt;a href="#%e5%8d%81%e4%b8%80%e5%b8%b8%e8%a7%81%e5%91%bd%e4%bb%a4%e9%80%9f%e6%9f%a5%e8%a1%a8" class="header-anchor"&gt;&lt;/a&gt;十一、常见命令速查表
&lt;/h2&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 init&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;初始化一个 Git 仓库&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;git clone 仓库地址&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 status&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 diff&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 diff --staged&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 add 文件名&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 add .&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 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&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;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 pull&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 branch&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 分支名&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 分支名&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 merge 分支名&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 restore 文件名&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 restore --staged 文件名&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 commit --amend&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;修改最近一次提交&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="十二个人建议"&gt;&lt;a href="#%e5%8d%81%e4%ba%8c%e4%b8%aa%e4%ba%ba%e5%bb%ba%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;十二、个人建议
&lt;/h2&gt;&lt;p&gt;刚开始用 Git，不需要一次记住所有命令。先熟悉这几个就够了：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;提交说明&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中最重要的是 &lt;code&gt;git status&lt;/code&gt;。它像 Git 的仪表盘，能告诉你当前仓库处在什么状态。&lt;/p&gt;
&lt;p&gt;养成提交前先看状态、先看 diff 的习惯，Git 用起来就会稳定很多。&lt;/p&gt;</description></item></channel></rss>