<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Git - 标签 - Vindrin</title><link>https://vindrin.top/zh-cn/tags/git/</link><description>Git - 标签 - Vindrin</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>vindrin@outlook.com (Vindrin)</managingEditor><webMaster>vindrin@outlook.com (Vindrin)</webMaster><lastBuildDate>Tue, 10 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://vindrin.top/zh-cn/tags/git/" rel="self" type="application/rss+xml"/><item><title>搞懂 Git Rebase 和 Merge 的区别</title><link>https://vindrin.top/zh-cn/posts/git-rebase-vs-merge/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><author>vindrin@outlook.com (Vindrin)</author><guid>https://vindrin.top/zh-cn/posts/git-rebase-vs-merge/</guid><description><![CDATA[<h1 id="搞懂-git-rebase-和-merge-的区别">搞懂 Git Rebase 和 Merge 的区别</h1>
<p>这个问题几乎困扰过每一个开发者，今天来讲清楚。</p>
<h2 id="merge">Merge</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git checkout main
</span></span><span class="line"><span class="cl">git merge feature-branch</span></span></code></pre></div></div>
<p>会创建一个<strong>合并提交</strong>。历史记录清晰展示了两条分支在某个节点汇合。适合共享分支。</p>
<h2 id="rebase">Rebase</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git checkout feature-branch
</span></span><span class="line"><span class="cl">git rebase main</span></span></code></pre></div></div>
<p>将你的提交&quot;移植&quot;到 <code>main</code> 最新节点之后。历史记录看起来是<strong>线性的</strong>，就像你是在 main 更新后才开始做功能一样。</p>
<h2 id="什么时候用哪个">什么时候用哪个？</h2>
<table>
  <thead>
      <tr>
          <th>场景</th>
          <th>推荐方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>共享分支（main、dev）</td>
          <td><code>merge</code></td>
      </tr>
      <tr>
          <td>个人功能分支</td>
          <td><code>rebase</code></td>
      </tr>
      <tr>
          <td>提 PR 之前整理提交</td>
          <td><code>rebase</code></td>
      </tr>
      <tr>
          <td>PR 合并后</td>
          <td>无所谓</td>
      </tr>
  </tbody>
</table>
<h2 id="黄金原则">黄金原则</h2>
<p><strong>永远不要对别人正在用的分支做 rebase。</strong> 重写共享历史会把所有人搞乱。</p>]]></description></item><item><title>Git 速查手册</title><link>https://vindrin.top/zh-cn/docs/git-quick-reference/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><author>vindrin@outlook.com (Vindrin)</author><guid>https://vindrin.top/zh-cn/docs/git-quick-reference/</guid><description><![CDATA[<h1 id="git-速查手册">Git 速查手册</h1>
<p>我每天都会用到的命令。</p>
<h2 id="仓库初始化">仓库初始化</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git init                        <span class="c1"># 新建仓库</span>
</span></span><span class="line"><span class="cl">git clone &lt;url&gt;                 <span class="c1"># 克隆远程仓库</span>
</span></span><span class="line"><span class="cl">git clone --recurse-submodules  <span class="c1"># 含 submodule 的克隆</span></span></span></code></pre></div></div>
<h2 id="暂存与提交">暂存与提交</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git status                      <span class="c1"># 查看改动</span>
</span></span><span class="line"><span class="cl">git add .                       <span class="c1"># 暂存全部</span>
</span></span><span class="line"><span class="cl">git add -p                      <span class="c1"># 交互式暂存</span>
</span></span><span class="line"><span class="cl">git commit -m <span class="s2">&#34;提交信息&#34;</span>
</span></span><span class="line"><span class="cl">git commit --amend              <span class="c1"># 修改上次提交</span></span></span></code></pre></div></div>
<h2 id="分支操作">分支操作</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git branch                      <span class="c1"># 列出所有分支</span>
</span></span><span class="line"><span class="cl">git branch &lt;name&gt;               <span class="c1"># 创建分支</span>
</span></span><span class="line"><span class="cl">git checkout -b &lt;name&gt;          <span class="c1"># 创建并切换</span>
</span></span><span class="line"><span class="cl">git switch &lt;name&gt;               <span class="c1"># 切换分支（新语法）</span>
</span></span><span class="line"><span class="cl">git branch -d &lt;name&gt;            <span class="c1"># 删除分支</span></span></span></code></pre></div></div>
<h2 id="远程操作">远程操作</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git remote -v                   <span class="c1"># 查看远程仓库</span>
</span></span><span class="line"><span class="cl">git fetch                       <span class="c1"># 拉取不合并</span>
</span></span><span class="line"><span class="cl">git pull                        <span class="c1"># 拉取并合并</span>
</span></span><span class="line"><span class="cl">git push origin &lt;branch&gt;
</span></span><span class="line"><span class="cl">git push -u origin &lt;branch&gt;     <span class="c1"># 设置上游分支</span></span></span></code></pre></div></div>
<h2 id="撤销操作">撤销操作</h2>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-bash">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git restore &lt;file&gt;              <span class="c1"># 丢弃工作区修改</span>
</span></span><span class="line"><span class="cl">git reset HEAD &lt;file&gt;           <span class="c1"># 取消暂存</span>
</span></span><span class="line"><span class="cl">git reset --soft HEAD~1         <span class="c1"># 撤销上次提交（保留改动）</span>
</span></span><span class="line"><span class="cl">git revert &lt;hash&gt;               <span class="c1"># 安全撤销（生成新提交）</span></span></span></code></pre></div></div>]]></description></item></channel></rss>