Fügen Sie rekursiv den gesamten Ordner zu einem Repository hinzu


250

Ich versuche, dem Hauptzweig auf GitHub einen Zweig hinzuzufügen und einen Ordner auf diesen Zweig zu verschieben.

Die Ordnerstruktur des Zweigs sieht wie folgt aus: SocialApp / SourceCode / DevTrunk / SocialApp und alle Quellcodedateien befinden sich im letzten Ordner.

Ich verwende die folgenden Git-Befehle:

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

Dadurch wird nur der erste Ordner "SocialApp" auf GitHub verschoben und der Ordner SourceCode, der sich im Ordner befindet, ignoriert. Wie behebe ich das?


4
Gibt es irgendwo Dateien? werden sie nicht ignoriert .gitignore?
CharlesB

This is pushing only the first folder- git kümmert sich überhaupt nicht um Ordner, sondern nur um Dateien. Bitte zeigen Sie das Commit - Sie haben entweder ein Submodul, einen Symlink oder etwas anderes
festgeschrieben

Ich habe das gleiche Problem. Ich denke nicht, dass dies ein Problem ist, sondern nur das erwartete Verhalten. Überraschenderweise gibt es so viele Lösungen.

Hinweis: Wenn Ihre Ordner leer sind, werden sie nicht nachverfolgt. Es ist eine gute Praxis, eine leere .keep-Datei dort abzulegen, um die leeren Verzeichnisse zu behalten
Dude

Antworten:


356

Überprüfen Sie die .gitignoreDatei, wenn das Unterverzeichnis ignoriert wird.

Dann versuchen Sie es erneut

git add --all
git commit -am "<commit message>"
git push

4
Beachten Sie, dass dies keine in .gitignore genannten Dateien enthält. Normalerweise füge ich diese von Hand hinzu oder verwende eine Batch-Datei wie diese: for /R %%f in (*.*) do git add --force %%f(siehe bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/… )
Jeroen Wiert Pluimers

10
Um die gesamte Baumstruktur des Ordners rekursiv hinzuzufügen, sollte der Befehl lautengit add --all :/
Jason Hartley

7
@JeroenWiertPluimers git add -f -allarbeitet, um .gitignored Dateien hinzuzufügen
Orwellophile

3
@ JasonHartley Ihr Kommentar könnte eine Antwort sein. Vielen Dank!
ShutUpMagda

4
Fügt dies nicht alle nicht bereitgestellten Dateien im Git-Repo hinzu, nicht nur den aktuellen Ordner? Ich glaube nicht, dass es das ist, was die ursprüngliche Frage stellt.
Ted

31

Das hat bei mir funktioniert:

git add . --force

1
Bei den anderen Antworten muss die Dateiliste als Argument für den Befehl berechnet werden. Dies ist nicht der Fall, daher ist dies eine bessere Wahl.
Topkara

3
Auf jeden Fall die beste Antwort. Eine Änderung wäre zu erwähnen, dass Sie die nicht benötigen, --forcewenn Sie möchten, dass die Ignorierungen weiterhin respektiert werden.
GrafikRobot

31

SETUP - lokales Repository auf einem lokalen Server - Der Client ist über ein LAN mit dem lokalen Server verbunden

git add foldername/\\*

Um es zum Server zu schaffen ...

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

Meistens weisen Benutzer remote_server_name als Ursprung zu ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo

9
Fehlgeschlagen als fatal: pathspec 'foldername/\\*' did not match any files. Arbeitete als git add foldername/\*.
Tpojka

Was ist der Unterschied zwischen git add foldername/\\*und git add --all?
Danijel

17

Sowohl "git add *" als auch "git add SocialApp", die aus dem obersten Verzeichnis aufgerufen werden, sollten rekursiv alle Verzeichnisse hinzufügen.

Wahrscheinlich haben Sie keine Dateien in SocialApp / SourceCode / DevTrunk / SocialApp und dies ist der Grund.

Versuchen Sie, "touch SocialApp / SourceCode / DevTrunk / SocialApp / .temporary" aufzurufen (und überprüfen Sie .gitignore), und versuchen Sie dann erneut, git add.


2
Ich glaube nicht, ich benutze git add * und habe das gleiche Problem.

16

In meinem Fall befand sich im Unterverzeichnis ein .git-Ordner, da ich dort zuvor ein Git-Repo initialisiert hatte. Als ich das Unterverzeichnis hinzufügte, fügte es es einfach als Unterprojekt hinzu, ohne eine der enthaltenen Dateien hinzuzufügen.

Ich habe das Problem gelöst, indem ich das Git-Repository aus dem Unterverzeichnis entfernt und den Ordner erneut hinzugefügt habe.


Das hat es für mich gelöst. Ich musste auch den Ordner selbst umbenennen, damit das Update aktiviert werden konnte.
Totem

6

Ich habe das einfach benutzt:

git add app/src/release/*

Sie müssen lediglich den Ordner angeben, der hinzugefügt werden soll, und dann *alles, was sich darin befindet, rekursiv hinzufügen.


5

Ich bin auf dieses Problem gestoßen, das mich ein wenig Zeit gekostet hat, und habe mich dann daran erinnert, dass Git keine leeren Ordner speichert. Denken Sie daran, dass Sie, wenn Sie einen Ordnerbaum haben, den Sie speichern möchten, eine Datei in mindestens den tiefsten Ordner dieses Baums legen, etwa in eine Datei namens ".gitkeep", um die Speicherung durch git zu beeinflussen.


5

Wenn Sie ein Verzeichnis und alle darin enthaltenen Dateien rekursiv hinzufügen möchten, wechseln Sie zu dem Verzeichnis, in dem sich das Verzeichnis befindet, das Sie hinzufügen möchten.

$ cd directory
$ git add directoryname

1
CD-Verzeichnis git add *
François Richard

3

Ich hatte auch das gleiche Problem und ich habe keine .gitignore-Datei. Mein Problem wurde folgendermaßen gelöst. Dies nahm alle Unterverzeichnisse und Dateien.

git add <directory>/*

1

Es gibt Zeiten, in denen ich meine Webdienst-Quellcodes zusammen mit dem clientseitigen Projekt einschließen möchte. Beide haben separate Git-Repositories. Ich bin es tatsächlich gewohnt, alle Dateien mit dem folgenden Befehl hinzuzufügen:

git add -A

Aus irgendeinem Grund wird jedoch nur der Ordner hinzugefügt. Später fand ich heraus, dass die Serverdateien auch einen .gitOrdner enthalten, sodass der Befehl nicht funktioniert.

tl; dr : Stellen Sie sicher, dass sich .gitin dem Ordner, den Sie bereitstellen möchten, kein Ordner befindet.


1
Wie können Sie dies umgehen, wenn Sie die .git-Ordner nicht entfernen möchten?
rollt

@ Rolls siehe Git Submodule
mr5

1

Navigieren Sie zu dem Ordner, in dem Sie Ihre Dateien haben,
wenn Sie sich auf einem Windows-Computer befinden. Sie müssen git bash starten, von dem aus Sie eine Befehlszeilenschnittstelle erhalten, und dann diese Befehle verwenden

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

Wenn Sie Änderungen an den Dateien vornehmen, bevor Sie sie mit dem Master zusammenführen, müssen Sie die Änderungen durch Ausführen festschreiben

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

Nach dieser Kasse die Verzweigung zur Hauptverzweigung


Beantworten Sie nur diese Erwähnungeninit
Atul

1

Szenario / Lösung 1:
Stellen Sie sicher, dass Ihr Folder/ möglicherweise Sub-foldernicht in der .gitignoreDatei enthalten ist.


Szenario / Lösung 2:
Standardmäßig git add .funktioniert rekursiv.


Szenario / Lösung 3: Funktioniert
git add --all :/ reibungslos, wo git add .nicht (funktioniert).
(@ JasonHartleys Kommentar)


Szenario / Lösung 4:
Das Problem, mit dem ich persönlich konfrontiert war Subfolders or Files, war das Hinzufügen , das bei mehreren gemeinsam war Folders.

Beispielsweise:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

Also Gitempfahl ich hinzuzufügen git submodule, was ich versuchte, aber ein Schmerz war.


Schließlich funktionierte für mich Folgendes:

1. git addEine Datei, die sich am letzten Ende / Level von a befindet Folder.
Zum Beispiel:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/jetzt.
Es wird sehr schnell alle hinzufügen Folders, Subfoldersund files.



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.