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.


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 .


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


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.


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


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.


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”.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.