Git dodaje wszystkie podkatalogi

86

Mam problem z dodaniem folderu i wszystkich jego podkatalogów do mojego repozytorium git. Zdałem sobie sprawę, że jest to bardzo popularne pytanie po zrobieniu google i wypróbowałem każdą sugestię bez powodzenia, w szczególności sugestię ze strony podręcznika git-add . Próbowałem nawet git add -Abez powodzenia. Dla uproszczenia załóżmy, że zainicjowałem repozytorium git jako Dir1. Następnie mam następującą strukturę katalogów plików.

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

Moje prawdziwe pliki mają podkatalogi o głębokości od 5 do 6 poziomów, więc czy istnieje polecenie git, aby dodać wszystkie pliki z każdego podkatalogu do mojego repozytorium? W tej chwili, kiedy robię sugestię ze strony podręcznika git add Dir1/\*, widzę Dir2w moim repozytorium, ale pojawia się jako zielony folder i nie mogę go otworzyć, co prowadzi mnie do przekonania, że ​​wszystkie pliki / foldery Dir2nie otrzymały dodany. Każda pomoc byłaby bardzo mile widziana. Jestem nowym użytkownikiem git (mniej niż tydzień korzystania z niego), więc staraj się zachować instrukcje na poziomie początkującym.

Josh Bradley
źródło
2
git adddowolnego katalogu jest automatycznie rekurencyjna. Korzystanie git add .z najwyższego poziomu repozytorium powinno dodać wszystko tam. Jeśli nie, .gitignorejest w grze (lokalnie lub globalnie).
Nevik Rehnel
pan sprawdzić .gitignore? W jakiś sposób może Twoje katalogi są ignorowane.
ogzd
2
jaki jest wynik git status --ignored?
Chronial
2
Aby pomóc innym, którzy widzą to pytanie, jeśli katalogi, które tworzysz, nie zawierają żadnych plików, nie są one dodawane przez. git add .Musisz dodać jakiś plik w katalogach, aby git mógł je śledzić.
dzwoni

Odpowiedzi:

109

Zrobić,

git add .

w katalogu głównym repozytorium. Doda wszystko. Jeśli to zrobisz git add *, doda tylko pliki, na które *wskazuje. Pojedyncza kropka oznacza katalog.

Jeśli twój katalog lub plik nie został dodany do git index / repo po powyższym poleceniu, pamiętaj, aby sprawdzić, czy jest on oznaczony jako ignorowany przez git w pliku .gitignore .

Kalle Pokki
źródło
8
Właśnie tego próbowałem. Wciąż nie działa. Dodałem git. git commit git push origin master Czy coś mi brakuje?
Josh Bradley
4
Zakładając, że Twoje pliki są w katalogu Dir1, powinieneś zrobić cd Dir1; git init; git add . ; git commit;Nic więcej nie jest wymagane. Jeśli masz .gitignore ignoruje pliki w jakimś katalogu i nadal chcesz je dodać, musisz to zrobić git add -f .zamiast git add ..
Kalle Pokki
5
Próbowałem „git add”. ale to nie działało. Następnego dnia wróciłem i spróbowałem i wszystko „po prostu działało”, więc dzięki! To musiał być jeden z tych robaków o północy, które znikają, gdy ponownie zapala się światło.
Josh Bradley
2
git add. nie działa i nie dodaje rekurencyjnie podkatalogów i ich zawartości.
Nie wie dużo
Aby to działało, może być konieczne otwarcie nowego okna poleceń.
klatka grzechotnik
16

Proste rozwiązanie:

git rm --cached directory
git add directory
Shashwat Gupta
źródło
13

Możesz również napotkać problemy, jeśli sam podkatalog jest repozytorium git - tj. Ma katalog .git - sprawdź ls -a.

Aby usunąć, przejdź do podkatalogu i rm .git -rf.

PaulB
źródło
2
Na terminalu OSX 10.11.6 użyj: rm -rf .git
Sébastien REMY
2
To samo, prawda?
PaulB
4

Również walczyłem, ale poprawnie pisałem

git add -f ./JS/*

gdzie JS to nazwa mojego folderu zawierającego podfoldery i pliki

Ian Wright
źródło
2
może dodawać ignorowane pliki i robić bałagan w repozytorium.
zmiana
git add ./JSto prawidłowe użycie. Doda wszystkie pliki w katalogu i wszystkie podkatalogi nadal dbające o ignorowane pliki.
Rémi Benoit
1

Nie mogę powiedzieć na pewno, czy tak jest, ale moim problemem wydawało się mieć pliki .gitignore w niektórych podkatalogach. Ponownie, nie mogę tego zagwarantować, ale wszystko działało po ich usunięciu.

Adam Ruhl
źródło
0

Najprawdopodobniej plik .gitignore s są w grze. Zwróć uwagę, że pliki .gitignore mogą pojawiać się nie tylko na poziomie głównym repozytorium, ale także na dowolnym poziomie podrzędnym. Możesz spróbować tego na poziomie głównym, aby je znaleźć:

odnaleźć . -name „.gitignore”

a następnie przejrzyj wyniki, aby zobaczyć, co może przeszkadzać w dodaniu podkatalogów.

W grę mogą wchodzić również moduły podrzędne. Sprawdź, czy w katalogach nie ma plików „.gitmodules”.

samato
źródło
0

Widziałem ten problem wcześniej, gdy (pod) folder, który próbowałem dodać, miał swoją nazwę zaczynającą się od „_Something_”

Usunąłem podkreślenia i zadziałało. Sprawdź, czy folder zawiera znaki, które mogą powodować problemy.

Ash Kumar
źródło