Git使用之submodule

三葉蟲Aq發表於2020-08-15

入職第一週,就因為clone專案而產生了很大的障礙,花了差不多三四個小時才定位問題並解決,記錄一下。


一、問題

當我們在使用Git克隆專案的時候,無法克隆下來一個資料夾。記該資料夾為A,A在遠端倉庫是有的,也能點開看到,而克隆下來後,本地A點開後是空的,什麼也沒有。
A的特徵為,其後面跟著一個 @xxxxxxx,xxxxxxx為一串數字。

 

 二、問題演示

1、在Git Bash中克隆遠端倉庫,指令如下:

git clone https://github.com/Aq-audio/work-record

拷貝本地檔案如下所示

 而遠端倉庫如下所示

 

2、繼續點開submodule資料夾。
本地如下所示

 

 而遠端倉庫點開後如下所示

 

 3、問題出現了:本地上啥也沒有,而遠端倉庫中卻有檔案——README.md。

三、定位問題

核心在於,submodule資料夾是一個子專案,在遠端倉庫中,其後面的 @xxxxxxx是子專案的標識。
submodule的具體使用大家可以看Git Book的描述,在此不加以贅述。

https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97

四、解決問題

在本地中,Git Bash進入最開始拷貝得到的資料夾,本例中,該資料夾是 work-record,如下所示

 

 輸入指令

git submodule update --init --recursive

此時,再進入本地的submodule資料夾,可以看到,已經將遠端倉庫中該資料夾下的檔案拷下來了。

其它方法:
1、在最開始的時候,看到有這種子專案的專案,直接用以下指令拷貝。
git clone --recursive https://github.com/Aq-audio/work-record

便可以一步到位將所有的子專案拷到本地來。

2、使用visual studio拉取專案,選擇遞迴式拉取。
同樣的,如果一個大專案中,有子專案,子專案下面又有子專案,也是一樣的操作方法。

 

說明:該內容與我的知乎專欄——工作點滴一致,都是本人所寫。將知乎的內容也發在部落格園是因為認識的一個大佬曾在部落格園中寫過不少部落格,向他學習。

 

 

相關文章