<?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 Tom 除錯中</title><link>https://tomleesm.github.io/tags/git/</link><description>Recent content in Git on Tom 除錯中</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 27 Mar 2025 08:50:03 +0800</lastBuildDate><atom:link href="https://tomleesm.github.io/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 設定</title><link>https://tomleesm.github.io/posts/2025/03/git-setup/</link><pubDate>Thu, 27 Mar 2025 08:50:03 +0800</pubDate><guid>https://tomleesm.github.io/posts/2025/03/git-setup/</guid><description>&lt;p&gt;使用 Vim 編輯 commit 訊息，不套用設定，速度快。Neovim 安裝在 ~/apps 時，以下設定會無效，所以改用 Vim&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 config --global core.editor &lt;span class="s1"&gt;&amp;#39;vim -u NONE -N&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://blog.gslin.org/archives/2020/03/29/9459"&gt;強制每個 Git Repository 都要設定使用者資訊&lt;/a&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 config --global user.useConfigOnly &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset user.name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset user.email
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset user.signingkey
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不允許 有 LF 與 CRLF 混合的檔案&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 config --global core.safecrlf &lt;span class="nb"&gt;true&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;&lt;span class="c1"&gt;# git s 在 git status 只顯示檔名，不顯示分支名稱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global alias.s &lt;span class="s2"&gt;&amp;#34;status -s&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# git l 簡短顯示 git log 圖形：hash、新增或更新、commit 訊息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global alias.l &lt;span class="s2"&gt;&amp;#34;log --oneline --graph&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# git l 簡短顯示 git log 圖形：hash、多久前、誰、新增或更新、commit 訊息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global alias.lt &lt;span class="s1"&gt;&amp;#39;log --oneline --graph --pretty=format:&amp;#34;%h [%ar] %an %s&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;git init 預設分支名稱爲 main，否則新版本的 Git 會跑出警告&lt;/p&gt;</description></item><item><title>GitHub 預設分支 master 改名為 main</title><link>https://tomleesm.github.io/posts/2023/05/github-branch-master-rename-main/</link><pubDate>Mon, 08 May 2023 21:30:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2023/05/github-branch-master-rename-main/</guid><description>&lt;p&gt;今天把 GitHub 某個專案的預設分支從 master 改成 main，然後 GitHub 就顯示以下的說明：&lt;/p&gt;
&lt;p&gt;If you have a local clone, you can update it by running the following commands.&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 branch -m master main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git fetch origin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git branch -u origin/main main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote set-head origin -a
&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 branch -m master main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;git branch -m&lt;/code&gt;：把 local 端的分支改名
&lt;code&gt;git branch -m 舊的分支名稱 新的分支名稱&lt;/code&gt;
可以只有 &lt;code&gt;git branch -m 新的分支名稱&lt;/code&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 fetch origin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;git fetch&lt;/code&gt;：同步遠端的 commit，但是不合併到 local 端
&lt;code&gt;origin&lt;/code&gt; 代表遠端節點&lt;/p&gt;</description></item><item><title>Git rebase 是什麼？</title><link>https://tomleesm.github.io/posts/2023/04/git-rebase/</link><pubDate>Wed, 26 Apr 2023 22:16:21 +0800</pubDate><guid>https://tomleesm.github.io/posts/2023/04/git-rebase/</guid><description>&lt;p&gt;首先新增一個目錄 test，並在目錄中新增文字檔 c，第一行新增數字 0，存檔後執行 &lt;code&gt;git commit -a -m 'C0'&lt;/code&gt;，接著第二行新增數字 1，存檔後執行 &lt;code&gt;git commit -a -m 'C1'&lt;/code&gt;，第三行新增數字 2，存檔後執行 &lt;code&gt;git commit -a -m 'C2'&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;以上，如果有分支 master 和 experiment 如下，C2 到 C3 的改變是檔案 c 第 4 行新增數字 3，C2 到 C4 的改變是檔案 c 第 1 行改成 5&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; C4 -- [master]
/
C0 &amp;lt;-- C1 &amp;lt;-- C2
\
C3 -- [experiment]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;切換分支到 experiment&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git merge master&lt;/code&gt;：以 C3 和 C4 的共同祖先 C2 為基礎，比較 C2 到 C3 的改變 (第 4 行新增 3)，然後 C2 和 C4 的改變(第 1 行改成 5)，於是產生 C5，檔案 c 的內容和分支會是以下所示：&lt;/p&gt;</description></item></channel></rss>