如何刪除子模塊?

如何刪除Git子模塊? php

順便說一句,有一個緣由我不能簡單地作git submodule rm whatever嗎? git


#1樓

若是因爲添加,提交併推送了已是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


#2樓

總之,這是您應該作的: spa

  1. 設置path_to_submodule var(不帶斜槓): code

    path_to_submodule=path/to/submodule 索引

  2. 從.gitmodules文件中刪除相關行: ci

    git config -f .gitmodules --remove-section submodule.$path_to_submodule rem

  3. 從.git / config中刪除相關部分 get

    git config -f .git/config --remove-section submodule.$path_to_submodule

  4. 取消登臺並僅從索引中刪除$ path_to_submodule(以防止丟失信息)

    git rm --cached $path_to_submodule

  5. 跟蹤對.gitmodules所作的更改

    git add .gitmodules

  6. 提交超級項目

    git commit -m "Remove submodule submodule_name"

  7. 刪除如今未跟蹤的子模塊文件

    rm -rf $path_to_submodule

    rm -rf .git/modules/$path_to_submodule


#3樓

您必須刪除.gitmodules.git/config中的條目,並從歷史記錄中刪除模塊的目錄:

git rm --cached path/to/submodule

若是您要在git的郵件列表上寫,也許有人會爲您作一個shell腳本。


#4樓

經過頁面Git Submodule Tutorial

要刪除子模塊,您須要:

  1. .gitmodules文件中刪除相關部分。
  2. .gitmodules更改:
    git add .gitmodules
  3. .git/config刪除相關部分。
  4. 從工做樹和索引中刪除子模塊文件:
    git rm --cached path_to_submodule (無尾斜槓)。
  5. 刪除子模塊的.git目錄:
    rm -rf .git/modules/path_to_submodule
  6. 提交更改:
    git commit -m "Removed submodule <name>"
  7. 刪除如今未跟蹤的子模塊文件:
    rm -rf path_to_submodule

另請參閱如下替代步驟


#5樓

您能夠使用別名來自動化其餘人提供的解決方案:

[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

相關文章
相關標籤/搜索