Rekurencyjnie dodaj cały folder do repozytorium

250

Próbuję dodać gałąź do gałęzi głównej w GitHub i wypchnąć folder do tej gałęzi.

Struktura folderów oddziału wygląda następująco - SocialApp / SourceCode / DevTrunk / SocialApp, a wszystkie pliki kodu źródłowego znajdują się w ostatnim folderze.

Korzystam z następujących poleceń Git:

git add *
git commit -m with the message
git push

Spycha to tylko pierwszy folder „SocialApp” na GitHub i ignoruje folder SourceCode znajdujący się w folderze. Jak to naprawić?

Ashish Agarwal
źródło
4
czy są gdzieś pliki? czy oni nie są ignorowani .gitignore?
CharlesB
This is pushing only the first folder- git wcale nie dba o foldery, tylko pliki. pokaż zatwierdzenie - popełniłeś podmoduł, dowiązanie symboliczne lub coś innego, co nie jest folderem
AD7six
Mam ten sam problem. Nie sądzę, że jest to problem, ale tylko oczekiwane zachowanie. Zaskakujące jest tak wiele rozwiązań.
Uwaga: gdy foldery są puste, nie są śledzone. dobrą praktyką jest umieszczanie w nim pustego pliku .keep w celu przechowywania pustych katalogów
Koleś

Odpowiedzi:

356

Sprawdź .gitignoreplik, jeśli podkatalog jest ignorowany.

Następnie spróbuj ponownie

git add --all
git commit -am "<commit message>"
git push
beyersdorfinger
źródło
4
Pamiętaj, że nie będzie to obejmować plików wymienionych w .gitignore. Zazwyczaj dodaję je ręcznie lub używam pliku wsadowego takiego: for /R %%f in (*.*) do git add --force %%f(patrz bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/… )
Jeroen Wiert Pluimers
9
Aby rekurencyjnie dodać całą strukturę drzewa folderu, polecenie powinno brzmiećgit add --all :/
Jason Hartley
7
@JeroenWiertPluimers git add -f -allpracuje nad dodaniem plików
.gitignored
3
@JasonHartley Twój komentarz może być odpowiedzią. Dzięki!
ShutUpMagda
4
Czy to nie dodaje wszystkich niestacjonarnych plików do repozytorium git, a nie tylko bieżącego folderu? Nie sądzę, że o to pyta oryginalne pytanie.
Ted
31

To działało dla mnie:

git add . --force
okej
źródło
1
Inne odpowiedzi wymagają obliczenia listy plików jako argumentu dla polecenia, ta nie, dlatego jest lepszym wyborem.
topkara,
3
Zdecydowanie najlepsza odpowiedź. Jedną zmianą byłoby wspomnienie, że nie potrzebujesz, --forcejeśli chcesz, aby ignorowania były nadal przestrzegane.
GrafikRobot,
31

SETUP - lokalne repozytorium na lokalnym serwerze - klient jest podłączony do lokalnego serwera za pośrednictwem sieci LAN

git add foldername/\\*

Aby dostać się na serwer ...

git commit -m "comments..."
git push remote_server_name master

Przeważnie użytkownicy przypiszą nazwę zdalnego_serwera jako pochodzenie ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo
Jake Bantug
źródło
9
Nie powiodło się jako fatal: pathspec 'foldername/\\*' did not match any files. Pracował jako git add foldername/\*.
Tpojka
Jaka jest różnica między git add foldername/\\*i git add --all?
Danijel
17

Zarówno „git add *”, jak i „git add SocialApp” wywoływane z głównego katalogu powinny rekurencyjnie dodawać wszystkie katalogi.

Prawdopodobnie nie masz plików w SocialApp / SourceCode / DevTrunk / SocialApp i to jest powód.

Spróbuj wywołać „dotknij SocialApp / SourceCode / DevTrunk / SocialApp / .temporary” (i sprawdź .gitignore), a następnie spróbuj ponownie dodać git.

nopsoft
źródło
2
Nie sądzę, używam git add * i mam ten sam problem.
16

W moim przypadku w podkatalogu był folder .git, ponieważ wcześniej zainicjowałem tam repozytorium git. Kiedy dodałem podkatalog, po prostu dodałem go jako podprojekt bez dodawania żadnego z zawartych plików.

Rozwiązałem problem, usuwając repozytorium git z podkatalogu, a następnie ponownie dodając folder.

rozpraszać
źródło
To rozwiązało dla mnie. Musiałem także zmienić nazwę samego folderu, aby wprowadzić poprawkę.
Totem
6

Po prostu użyłem tego:

git add app/src/release/*

Musisz tylko określić folder, który chcesz dodać, a następnie użyj, *aby dodać wszystko, co jest w środku rekurencyjnie.

Jaime Montoya
źródło
5

Wpadłem na ten problem, który kosztował mnie trochę czasu, a potem przypomniałem sobie, że git nie będzie przechowywać pustych folderów. Pamiętaj, że jeśli masz drzewo folderów, które chcesz przechowywać, umieść plik w co najmniej najgłębszym folderze tego drzewa, coś w rodzaju pliku o nazwie „.gitkeep”, aby wpłynąć na przechowywanie przez git.

użytkownik2989397
źródło
5

Jeśli chcesz dodać katalog i wszystkie znajdujące się w nim pliki rekurencyjnie, przejdź do katalogu, w którym znajduje się katalog, który chcesz dodać.

$ cd directory
$ git add directoryname
użytkownik7205168
źródło
1
katalog cd git add *
François Richard
3

Miałem również ten sam problem i nie mam pliku .gitignore. Mój problem został rozwiązany w następujący sposób. Zajęło to wszystkie podkatalogi i pliki.

git add <directory>/*
Suyash Jain
źródło
1

Czasami chcę dołączyć kody źródłowe moich usług sieciowych wraz z projektem po stronie klienta. Oba mają osobne repozytoria git. Jestem przyzwyczajony do dodawania wszystkich plików za pomocą polecenia:

git add -A

Ale z jakiegoś powodu dodaje tylko folder. Później dowiedziałem się, że pliki serwera również mają swój .gitfolder, więc polecenie nie działa.

tl; dr : Upewnij się, że .gitw folderze nie ma folderu, który chcesz wystawić.

mr5
źródło
1
Jak obejść ten problem, jeśli nie chcesz usuwać folderów .git?
rzuca
@rolls patrz git submodules
mr5
1

Przejdź do folderu, w którym masz swoje pliki,
jeśli jesteś na komputerze z systemem Windows, musisz uruchomić git bash, z którego otrzymasz interfejs wiersza poleceń, a następnie użyj tych poleceń

git init   //this initializes a .git  repository in your working directory

git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded

git add *   // this adds all the files to the initialialized git repository

jeśli dokonasz jakichkolwiek zmian w plikach przed scaleniem ich z wzorcem, musisz zatwierdzić zmiany poprzez wykonanie

git commit -m "applied some changes to the branch"

Po tej kasie oddział do gałęzi master

Austine Gwa
źródło
Odpowiedz tylko na te wzmiankiinit
Atul
1

Scenariusz / Rozwiązanie 1:
Upewnij się, że twojego Folder/ Sub-foldernie ma w .gitignorepliku, przypadkiem.


Scenariusz / Rozwiązanie 2:
Domyślnie git add .działa rekurencyjnie.


Scenariusz / Rozwiązanie 3:
git add --all :/ działa płynnie tam, gdzie git add .nie działa (działa).
(@ Komentarz JasonHartley)


Scenariusz / Rozwiązanie 4:
Problem, z którym osobiście się spotkałem, polegał na dodawaniu Subfolders or Files, które były wspólne dla wielu Folders.

Na przykład:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

Tak Gitpolecił mi dodać git submodule, co próbowałem, ale było to uciążliwe.


Wreszcie działało dla mnie:

1. git addjeden plik na ostatnim końcu / poziomie pliku Folder.
Na przykład:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/teraz.
To będzie bardzo szybko dodać wszystko Folders, Subfoldersi files.


Nayyar
źródło
-2

To zadziałało dla mnie

git add -f *
Amine Sehaba
źródło