Jaki jest aktualny sposób na usunięcie podmodułu git?

Od wersji git 1.9.3 (Apple Git-50) na mac jak usunąć podmodule git? Czytam wiele nieaktualnych informacji, a wielu programistów mówi mi, że nie będą działać. Jaki jest obecny sposób ? czy uda Ci się ?

Kroki, które myślałem, że zadziałają są tutaj ale komentarze mówią, że nie będą.

Pozwól, że wyjaśnię moją obecną sytuację i to, czego potrzebuję. Zainstalowałem szybkie repozytorium i dodałem je do podmodułu do mojego projektu. Ten kod jest już sprawdzony i inni go używają. To, co teraz muszę zrobić, to fork to samo szybkie repozytorium i hostowanie go na bardziej bezpiecznym GitHubie, który ma Moja Firma (więc zupełnie inny prywatny github). Po rozwidleniu chcę dodać ten fork jako gitSubmodule i pozwolić mu zastąpić bieżący szybki podmodule, który wcześniej zainstalowałem.

Update: przeczytałem, że poniższy sposób jest poprawny w najnowszej wersji git, proszę potwierdzić?

To remove a submodule added using:

git submodule add [email protected]:repos/blah.git lib/blah
Run:

git rm lib/blah
That's it.

For old versions of git (circa ~1.8.5) use:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah
Author: j2emanue, 2015-04-24

3 answers

MASZ git submodule deinit

git submodule deinit <asubmodule>    
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>

deinit

Un-register the given submodules, czyli Usuń Cały submodule.$name
sekcja z .git/config wraz z ich drzewem roboczym.

[[10]}kolejne połączenia do git submodule update, git submodule foreach i git submodule sync pominie wszelkie niezarejestrowane podmodule, dopóki nie zostaną ponownie zainicjowane, więc użyj tego polecenia, jeśli nie chcesz mieć już lokalnej kasy podmodułu w swoim drzewie pracy.

Jeśli naprawdę chcesz usunąć podmodule z repozytorium i zatwierdzić, użyj git rm.

Jeśli podano --force, drzewo pracy podmodułu zostanie usunięte, nawet jeśli zawiera lokalne modyfikacje.

 164
Author: CodeWizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-10 09:18:03

Jak bezpiecznie usunąć podmoduł.

(dodaje do https://stackoverflow.com/a/1260982/342794 )

  1. Wypisz i zlokalizuj sekcję podmodułu w pliku .gitmodules. Powiedz przez terminal vi .gitmodules. Przykład:

    [submodule "submodules/afnetworking"]
        path = submodules/afnetworking
        url = https://github.com/CompanyName/afnetworking.git
    
  2. Podmoduły mogą być używane z lokalnymi widłami. W przypadku długotrwałych projektów kod może różnić się od oryginalnego repo i może zawierać pewne poprawki. Dobrym pomysłem jest sprawdzenie, czy kod podmodułu przeszedł zmiany w trakcie projektu. Przykład: spójrz na dzienniki, jeśli wskazują na master gałąź lub jakąś lokalną gałąź. przeglądanie dzienników Gita w celu znalezienia modyfikacji, które zostały wykonane za pomocą terminala. zazwyczaj są one przechowywane w katalogu, w moim przykładzie, w katalogu submodules.

    User$ cd submodules/afnetworking
    User$ git log
    
  3. Usuń sekcję podmodułu z .gitmodules, zapisz plik. Przykład: git status powinien pokazywać tylko następujące, jako zmodyfikowane

    modified:   .gitmodules
    
  4. Etap zmian za pomocą git add .gitmodules.

  5. Wymień i zlokalizuj sekcja podmodułu w plikach .git/config. Powiedz przez terminal vi .git/config. Przykład:

    [submodule "submodules/afnetworking"]
        url = https://github.com/CompanyName/afnetworking.git
    
  6. Usuń pliki git Cache sobmodule. uruchomienie git rm --cached submodules/afnetworking (BEZ ukośnika końcowego)spowoduje jego usunięcie. Przykład:

    User$ git rm --cached submodules/afnetworking
    rm 'submodules/afnetworking'    <-- terminal output
    
  7. Usuń pliki podmodułu w katalogu .git za pomocą rm -rf .git/modules/.... Następnie potwierdź to za pomocą git status.

    User$ rm -rf .git/modules/submodules/afnetworking/
    User$ git status
    On branch feature/replace-afnetworking-submodule-with-pod
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
        modified:   .gitmodules
        deleted:    submodules/afnetworking
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        submodules/afnetworking/
    
  8. Zatwierdź zmiany. Następnie potwierdź za pomocą git status.

    User$ git commit -m "Remove submodule afnetworking"
    [feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking
    2 files changed, 4 deletions(-)
      delete mode 160000 submodules/afnetworking
    User$ git status
    On branch feature/replace-afnetworking-submodule-with-pod
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        submodules/afnetworking/
    nothing added to commit but untracked files present (use "git add" to track)
    
  9. Usuń Nie śledzony podmoduł pliki.

    User$ rm -rf submodules/afnetworking
    
  10. Usuń odniesienia z projektu Xcode. Buduj, naprawiaj problemy z kompilacją i uruchomieniem.

 2
Author: lal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-31 15:33:28

Używam Git w wersji 2.16.2 i git rm wykonuje to zadanie głównie dobrze:

git rm path-to-submodule

Możesz sprawdzić za pomocą git status i git diff --cached, czy to deinicjalizuje podmoduł i automatycznie modyfikuje .gitmodules. Jak zawsze, musisz zatwierdzić zmianę.

Pomimo tego, że podmoduł jest usuwany spod kontroli źródła, .git/modules/path-to-submodule nadal zawiera repozytorium podmodułu, a .git/config zawiera jego adres URL, więc nadal musisz je usunąć ręcznie:

git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule

Prowadzenie repozytorium submodule i konfiguracja jest zamierzona, dzięki czemu można cofnąć usunięcie za pomocą np. git reset --hard.

 0
Author: mrts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-14 20:35:28