Git使用之submodule
入職第一周,就因為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的描述,在此不加以贅述。
//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拉取項目,選擇遞歸式拉取。
同樣的,如果一個大項目中,有子項目,子項目下面又有子項目,也是一樣的操作方法。
說明:該內容與我的知乎專欄——工作點滴一致,都是本人所寫。將知乎的內容也發在部落格園是因為認識的一個大佬曾在部落格園中寫過不少部落格,向他學習。