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ć?


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

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

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

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.


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.


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.


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.


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

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>/*

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


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


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.



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.