<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Git on 数字花园 | Mlosun.com</title><link>https://mlosun.com/tags/git/</link><description>Recent content in Git on 数字花园 | Mlosun.com</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>mlosun@qq.com (mlosun)</managingEditor><webMaster>mlosun@qq.com (mlosun)</webMaster><copyright>© 数字花园 | Mlosun.com</copyright><lastBuildDate>Sat, 05 Sep 2026 13:39:40 +0800</lastBuildDate><atom:link href="https://mlosun.com/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 常用命令速查</title><link>https://mlosun.com/docs/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/git-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5/</link><pubDate>Sun, 27 Oct 2024 00:00:00 +0800</pubDate><author>mlosun@qq.com (mlosun)</author><guid>https://mlosun.com/docs/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/git-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;本文基于 Git 2.46.0，日常使用中如有更多需求可查看 &lt;code&gt;git help&lt;/code&gt; 或官方文档。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="基本操作"&gt;基本操作&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;在当前目录初始化一个新的 Git 仓库&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git clone &amp;lt;地址&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;克隆远程仓库到本地&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;暂存所有修改过的文件&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git add &amp;lt;文件&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;暂存指定文件&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git commit -m &amp;quot;说明&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;提交暂存区的内容&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git commit -am &amp;quot;说明&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;暂存所有已跟踪文件并提交（跳过 &lt;code&gt;git add&lt;/code&gt;）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看当前工作区状态&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="分支管理"&gt;分支管理&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;列出本地分支（当前分支前有 &lt;code&gt;*&lt;/code&gt;）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git branch -a&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;列出所有分支（含远程分支）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git branch &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;创建新分支&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git branch -d &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;删除已合并的分支&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git branch -D &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;强制删除分支（即使未合并）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git switch &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;切换到已有分支&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git switch -c &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;创建并切换到新分支&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git merge &amp;lt;分支&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;将指定分支合并到当前分支&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git rebase &amp;lt;分支&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;将当前分支变基到指定分支&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="查看历史"&gt;查看历史&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看提交历史&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git log --oneline&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;单行显示提交历史&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git log --oneline --graph&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;以图形方式显示分支历史&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git log -p&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;显示每次提交的 diff&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;比较工作区和暂存区的差异&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git diff --staged&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;比较暂存区和上次提交的差异&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git show&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看最新提交的详细信息&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git show &amp;lt;commit-id&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看指定提交的详细信息&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="撤销与暂存"&gt;撤销与暂存&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git restore &amp;lt;文件&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;撤销工作区的修改（未暂存的文件）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git restore --staged &amp;lt;文件&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;取消暂存（文件回到工作区）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git reset --soft HEAD~1&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;撤销上次提交，保留修改&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git reset --hard HEAD~1&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;撤销上次提交，丢弃修改（慎用）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git stash&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;暂存当前工作区的修改&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git stash pop&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;恢复最近一次暂存并删除它&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git stash list&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看暂存列表&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="远程协作"&gt;远程协作&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看远程仓库地址&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git remote add origin &amp;lt;地址&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;添加远程仓库&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git push origin &amp;lt;分支&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;推送代码到远程&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git push -u origin &amp;lt;分支&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;首次推送并建立 upstream 关联&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;拉取远程代码并合并&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git fetch&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;拉取远程代码但不合并&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git clone &amp;lt;地址&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;克隆远程仓库&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="配置"&gt;配置&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config --list&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看当前所有配置&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config --global user.name &amp;quot;名称&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;设置全局用户名&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config --global user.email &amp;quot;邮箱&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;设置全局邮箱&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config user.name &amp;quot;名称&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;设置当前仓库的用户名&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config user.email &amp;quot;邮箱&amp;quot;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;设置当前仓库的邮箱&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config --global http.proxy &amp;lt;地址&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;设置 HTTP 代理&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git config --global --unset http.proxy&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;取消 HTTP 代理&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="其他"&gt;其他&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;命令&lt;/th&gt;&#10; &lt;th scope="col"&gt;说明&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git tag&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;列出所有标签&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git tag &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;创建轻量标签&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git mv &amp;lt;旧文件&amp;gt; &amp;lt;新文件&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;重命名或移动文件&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git rm &amp;lt;文件&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;从仓库中删除文件&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git clean -df&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;删除未跟踪的文件和目录&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git help&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看 Git 帮助信息&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;git -v&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;查看 Git 版本&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;</description></item><item><title>Git 多仓库身份配置</title><link>https://mlosun.com/docs/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/git-%E5%A4%9A%E4%BB%93%E5%BA%93%E8%BA%AB%E4%BB%BD%E9%85%8D%E7%BD%AE/</link><pubDate>Mon, 12 Aug 2024 00:00:00 +0800</pubDate><author>mlosun@qq.com (mlosun)</author><guid>https://mlosun.com/docs/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/git-%E5%A4%9A%E4%BB%93%E5%BA%93%E8%BA%AB%E4%BB%BD%E9%85%8D%E7%BD%AE/</guid><description>&lt;p&gt;工作电脑上同时有个人项目和公司项目时，如果不做配置，所有提交都会使用同一个用户名和邮箱。这篇文章教你如何让 Git 根据仓库自动切换身份。&lt;/p&gt;&#10;&lt;h2 id="配置优先级"&gt;配置优先级&#10;&lt;/h2&gt;&#10;&lt;p&gt;Git 采用三层配置覆盖，优先级&lt;strong&gt;从低到高&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>Git 清理远端仓库全部提交历史</title><link>https://mlosun.com/docs/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/git-%E6%B8%85%E7%90%86%E8%BF%9C%E7%AB%AF%E4%BB%93%E5%BA%93%E5%85%A8%E9%83%A8%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2/</link><pubDate>Wed, 11 Sep 2024 00:00:00 +0800</pubDate><author>mlosun@qq.com (mlosun)</author><guid>https://mlosun.com/docs/%E5%AE%9E%E8%B7%B5%E7%AC%94%E8%AE%B0/git-%E6%B8%85%E7%90%86%E8%BF%9C%E7%AB%AF%E4%BB%93%E5%BA%93%E5%85%A8%E9%83%A8%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2/</guid><description>&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;注意&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;此操作不可逆，会永久删除仓库的所有提交历史，请提前做好备份。&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="背景"&gt;背景&#10;&lt;/h2&gt;&#10;&lt;p&gt;当提交记录中包含隐私信息（如密钥、密码），或仓库因上传大量文件导致体积过大、拉取频繁出错时，可以通过清除全部提交历史来&amp;quot;瘦身&amp;quot;仓库，同时保留仓库本身（Star、Issues 等不受影响）。&lt;/p&gt;</description></item></channel></rss>