<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reset on 終於明白 | tsungyi knows.</title><link>https://tsungyi.li/Blog/tags/reset/</link><description>Recent content in Reset on 終於明白 | tsungyi knows.</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 31 Aug 2026 11:42:11 +0800</lastBuildDate><atom:link href="https://tsungyi.li/Blog/tags/reset/index.xml" rel="self" type="application/rss+xml"/><item><title>每天在打、但每次都要想一下的 Git 指令</title><link>https://tsungyi.li/Blog/posts/git-useful-commands/</link><pubDate>Mon, 31 Aug 2026 11:42:11 +0800</pubDate><guid>https://tsungyi.li/Blog/posts/git-useful-commands/</guid><description>&lt;h2 id="起因"&gt;起因&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;git fetch&lt;/code&gt;、&lt;code&gt;git pull&lt;/code&gt;、&lt;code&gt;git push&lt;/code&gt; 這三條指令，不加參數的行為大家都會。但真正會讓事情變好或變糟的，都是那幾個平常沒在打的參數。&lt;/p&gt;&#10;&lt;p&gt;同樣地，&lt;code&gt;git reset&lt;/code&gt;、&lt;code&gt;git commit&lt;/code&gt;、&lt;code&gt;git rebase&lt;/code&gt; 本身不難，難的是「commit message 打錯了要怎麼補」「已經 push 出去的分支要怎麼整理」這種當下會卡住的情境。&lt;/p&gt;&#10;&lt;p&gt;這篇整理我最常用到的六條，以及各自那個關鍵參數。&lt;/p&gt;&#10;&lt;h2 id="同步遠端fetch--pull--push"&gt;同步遠端：fetch / pull / push&lt;/h2&gt;&#10;&lt;h3 id="git-fetch---prune"&gt;&lt;code&gt;git fetch --prune&lt;/code&gt;&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;git fetch&lt;/code&gt; 能把遠端的 ref 抓回來更新本地的 remote-tracking branch（&lt;code&gt;origin/xxx&lt;/code&gt;），不動你的工作目錄，也不動你的本地分支。&lt;/p&gt;&#10;&lt;p&gt;問題在於它&lt;strong&gt;只增不減&lt;/strong&gt;。同事把 &lt;code&gt;origin/feature/login&lt;/code&gt; 合併後刪掉了，你這邊的 &lt;code&gt;origin/feature/login&lt;/code&gt; 還會一直留著，&lt;code&gt;git branch -r&lt;/code&gt; 越看越髒，用 fzf 之類的工具列清單時更明顯。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;--prune&lt;/code&gt;（縮寫 &lt;code&gt;-p&lt;/code&gt;）就是拿來清這個的：把遠端已經不存在的 remote-tracking branch 一併刪掉。&lt;/p&gt;&#10;&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;git fetch --prune&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git fetch -p &lt;span style="color:#75715e"&gt;# 同上&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git fetch --prune --prune-tags &lt;span style="color:#75715e"&gt;# 連遠端刪掉的 tag 一起清&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意 &lt;code&gt;--prune&lt;/code&gt; 刪的是 &lt;code&gt;origin/xxx&lt;/code&gt; 這種 remote-tracking ref，&lt;strong&gt;不會&lt;/strong&gt;動到你本地那條同名分支。合併完留下的本地分支還是要自己 &lt;code&gt;git branch -d&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>