Nie mogę pozbyć się nieśledzonej zawartości w modułach podrzędnych Git. git status
Plony bieżące :
# Na gałęzi master # Zmiany nie są wprowadzane do zatwierdzenia: # (użyj "git add ...", aby zaktualizować to, co zostanie zatwierdzone) # (użyj „git checkout - ...”, aby odrzucić zmiany w katalogu roboczym) # (zatwierdź lub odrzuć nieśledzoną lub zmodyfikowaną zawartość w modułach podrzędnych) # # modified: bundle / snipmate (nieśledzona zawartość) # Modified: bundle / surround (nieśledzona zawartość) # modified: bundle / końcowe-białe znaki (zawartość nieśledzona) # modified: bundle / zencoding (nieśledzona zawartość) # żadne zmiany nie zostały dodane do zatwierdzenia (użyj „git add” i / lub „git commit -a”)
Dodanie --ignore-submodules
parametru powoduje ukrycie tych komunikatów; ale zastanawiam się, czy istnieje sposób na pozbycie się tego brudu w bardziej odpowiedni, podstawowy sposób.
git
git-submodules
Tomer Lichtash
źródło
źródło
Odpowiedzi:
Ponieważ status git zgłasza niezamierzone treści, faktycznym sposobem uzyskania czystego statusu byłoby wejście do każdego z tych podmodułów i:
.gitignore
specyficznych dla każdego modułu..git/info/exclude
, co raporty peci1 w komentarzach .lub dodać brudny specyfikacji submodule, jak wspomniano w ezraspectre jest odpowiedź (upvoted).
lub dodaj plik globalny
.gitignore
(często~/.gitignore-global
). Jak na przykład.DS_Store
lub w moim przypadku,Carthage/Build
o czym pisał Marián Černý w komentarzach . Zobacz.gitginore
stronę podręcznika :źródło
.DS_Store
plik został automatycznie utworzony (przez OS X) w jednym z moich modułów podrzędnych, uniemożliwiając mi wykonanie głównego projektu. Arg! Czas na aktualizację.gitignore
....git/info/exclude
i dodaj tam linie ignorowania (działa jak .gitignore, ale nie jest częścią współdzielonego repozytorium).Uważam, że ten post na blogu działa ogólnie. Dodając
ignore = dirty
opcję do każdego wpisu w.gitmodules
pliku.źródło
ignore = untracked
również istnieje i pokazuje zmodyfikowane śledzone pliki, ale nie pliki nieśledzone. Byłoby miło, gdyby istniało globalne ustawienie dla wszystkichMożesz także przejść do katalogu każdego modułu podrzędnego i działać jako oddzielny git. Na przykład:
... / pobiera listę zmodyfikowanych plików /
możesz także zaktualizować zdalne repozytorium podmodułów za pomocą
w sumie
źródło
git add .
bez przeglądania zmodyfikowanych plików. W większości przypadków zmiany, które zostały wprowadzone, to dodane.DS_Store
pliki - to chyba powinno zostać przez Ciebie.gitignore
wyłapane, jak zourtney wspomniał w pierwszym komentarzu do odpowiedzi.git submodule update --force
.Przyczyną może być
detached HEAD
gałąź w module podrzędnym. W takim przypadku przejdź do ścieżki modułu podrzędnego (np .:)./bundle/snipmate
, a następnie uruchomgit checkout master
.źródło
Utknąłem wczoraj w tej kwestii, w projekcie, który miał blisko 12 modułów podrzędnych.
git status
pokazywał wynik.Aby rozwiązać ten nieśledzonej błąd treści, musiałem usunąć nieśledzone pliki z wszystkich submodules (wszyscy byli
*.pyc
,*.pyo
pliki generowane przez pytona) przy użyciu.gitignore
.Aby rozwiązać ten drugi, musiałem uruchomić
git submodule update
aktualizację każdego z podmodułów.źródło
W mojej sytuacji klonuję moduły jako punkt wyjścia dla nowego modułu w moim środowisku ZF2. To powoduje umieszczenie własnego folderu .git w katalogu.
Rozwiązaniem w tym przypadku jest usunięcie folderu .git (prawdopodobnie będziesz musiał pokazać ukryte pliki, aby go wyświetlić).
źródło
Dzieje się tak prawdopodobnie, gdy w danym folderze znajduje się inny plik .git [ukryty folder].
zmodyfikowano: ./../ .. (zmodyfikowana treść, nieśledzona treść)
upewnij się, że twój podkatalog nie zawiera tego folderu .git.
W takim przypadku problem można rozwiązać, ręcznie usuwając folder .git z podkatalogu.
źródło
Wolę używać SourceTree , więc rozwiązaniem dla mnie było otwarcie repozytorium submodułów w SourceTree, które pokazuje mi listę wszystkich nieśledzonych plików. Następnie grupowałem je wszystkie i użyłem „Usuń”.
Udało mi się to zrobić, ponieważ wiedziałem, że wszystkie nieśledzone pliki nie były w rzeczywistości potrzebne.
źródło
To zadziałało dobrze dla mnie:
Jeśli to nie zadziała
pathname
, wypróbuj nazwę pliku. Daj mi znać, jeśli to też zadziałało.źródło
Jeśli jest to problem tymczasowy, możesz przejść do folderu modułu podrzędnego i uruchomić,
git reset HEAD --hard
ale wszystkie zmiany wprowadzone w module podrzędnym zostaną utracone.źródło