如何刪除Git子模塊? php
順便說一句,有一個緣由我不能簡單地作git submodule rm whatever
嗎? git
若是因爲添加,提交併推送了已是Git存儲庫(包含.git
)的文件夾而意外添加了子模塊,則將沒有.gitmodules
文件或.git/config
任何內容。 在這種狀況下,您須要作的是: shell
git rm --cached subfolder git add subfolder git commit -m "Enter message here" git push
FWIW ,在執行git add
以前,我還刪除了.git
文件夾。 ide
總之,這是您應該作的: spa
設置path_to_submodule
var(不帶斜槓): code
path_to_submodule=path/to/submodule
索引
從.gitmodules文件中刪除相關行: ci
git config -f .gitmodules --remove-section submodule.$path_to_submodule
rem
從.git / config中刪除相關部分 get
git config -f .git/config --remove-section submodule.$path_to_submodule
取消登臺並僅從索引中刪除$ path_to_submodule(以防止丟失信息)
git rm --cached $path_to_submodule
跟蹤對.gitmodules所作的更改
git add .gitmodules
提交超級項目
git commit -m "Remove submodule submodule_name"
刪除如今未跟蹤的子模塊文件
rm -rf $path_to_submodule
rm -rf .git/modules/$path_to_submodule
您必須刪除.gitmodules
和.git/config
中的條目,並從歷史記錄中刪除模塊的目錄:
git rm --cached path/to/submodule
若是您要在git的郵件列表上寫,也許有人會爲您作一個shell腳本。
經過頁面Git Submodule Tutorial :
要刪除子模塊,您須要:
.gitmodules
文件中刪除相關部分。 .gitmodules
更改: git add .gitmodules
.git/config
刪除相關部分。 git rm --cached path_to_submodule
(無尾斜槓)。 .git
目錄: rm -rf .git/modules/path_to_submodule
git commit -m "Removed submodule <name>"
rm -rf path_to_submodule
另請參閱 : 如下替代步驟 。
您能夠使用別名來自動化其餘人提供的解決方案:
[alias] rms = "!f(){ git rm --cached \"$1\";rm -r \"$1\";git config -f .gitmodules --remove-section \"submodule.$1\";git config -f .git/config --remove-section \"submodule.$1\";git add .gitmodules; }; f"
將其放在您的git配置中,而後您能夠執行如下操做: git rms path/to/submodule