<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Git on omegaatt</title>
    <link>https://www.omegaatt.com/tags/git/</link>
    <description>Recent content in Git on omegaatt</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>zh-TW</language>
    <managingEditor>raiven.kao@gmail.com (Raiven Kao)</managingEditor>
    <webMaster>raiven.kao@gmail.com (Raiven Kao)</webMaster>
    <copyright>Raiven Kao 2020 - 2026</copyright>
    <lastBuildDate>Fri, 24 Jan 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.omegaatt.com/tags/git/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>在習慣 go mod 後重新學習 git submodule</title>
      <link>https://www.omegaatt.com/blogs/develop/2025/git_submodule_turorial/</link>
      <pubDate>Fri, 24 Jan 2025 00:00:00 +0000</pubDate><author>raiven.kao@gmail.com (Raiven Kao)</author>
      <guid>https://www.omegaatt.com/blogs/develop/2025/git_submodule_turorial/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;使用 Golang 作為主要開發已經有五年的時間。最近因工作需要接觸到 Python 專案，並且該專案使用 git submodule 的方式來引用共同函式庫 &lt;code&gt;common-lib-python&lt;/code&gt;。對於長久使用 Golang 的 &lt;code&gt;go mod&lt;/code&gt; 的我來說，submodule 是一個相對陌生的概念。藉這個機會撰寫一篇文章，整理並紀錄一下 git submodule 的用法，也作為未來的參考。&lt;/p&gt;
&lt;p&gt;這篇文章會假設已經對 git 的基本操作有一定程度的了解，並著重在 submodule 的概念、使用情境以及與 Golang 的 &lt;code&gt;go mod&lt;/code&gt; 的差異比較。文章內容會以下列流程來呈現：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;建立一個新的 Python 專案 &lt;code&gt;my-python-repo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;建立一個 Python 模組 &lt;code&gt;my-python-module&lt;/code&gt; 作為 submodule&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;my-python-repo&lt;/code&gt; 中使用 &lt;code&gt;my-python-module&lt;/code&gt; 作為 submodule&lt;/li&gt;
&lt;li&gt;模擬需求變更，同時修改 &lt;code&gt;my-python-repo&lt;/code&gt; 與 &lt;code&gt;my-python-module&lt;/code&gt;，並分別發送 PR&lt;/li&gt;
&lt;li&gt;與 Golang 的 &lt;code&gt;go mod&lt;/code&gt; 進行比較&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;建立-python-專案與模組&#34;&gt;建立 Python 專案與模組&lt;/h2&gt;
&lt;p&gt;先建立兩個新的 git repo，分別是 &lt;code&gt;my-python-repo&lt;/code&gt; 與 &lt;code&gt;my-python-module&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 建立 my-python-repo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir my-python-repo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd my-python-repo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;touch main.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git commit -m &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Initial commit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 建立 my-python-module&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ..
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir my-python-module
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd my-python-module
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;touch my_module.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git commit -m &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Initial commit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 將兩個專案 push 到 Github/Gitlab 上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;my-python-repo&lt;/code&gt; 與 &lt;code&gt;my-python-module&lt;/code&gt; 都已經是一個獨立的 git repo。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
