Der git-Befehl, der dem, was Sie suchen, am nächsten kommt, würde von git archive.
Siehe Sichern eines Projekts, das git verwendet : Es enthält alle Dateien in einem Archiv (einschließlich Submodule, wenn Sie das git-archive-allSkript verwenden).
Sie können dieses Archiv dann überall verwenden und nur Dateien und kein .gitVerzeichnis zurückgeben.
git archive --remote=<repository URL> | tar -t
Wenn Sie Ordner und Dateien nur von der ersten Ebene benötigen:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
So listen Sie nur Ordner der ersten Ebene eines Remote-Repos auf:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Hinweis: Das funktioniert nicht für GitHub (nicht unterstützt)
Sie müssten also klonen (flach, um den Klonschritt zu beschleunigen) und dann lokal archivieren :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Eine andere Möglichkeit wäre, einen flachen Klon (wie unten erwähnt) zu erstellen, aber den .git-Ordner an einer anderen Stelle zu suchen.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
Der Repo-Ordner würde nur die Datei enthalten, ohne .git.
Hinweis: git --git-dir ist eine Option des Befehlsgit , nicht git clone.
Update mit Git 2.14.X / 2.15 (Q4 2017): Es wird sichergestellt, dass keine leeren Ordner hinzugefügt werden .
" git archive", insbesondere bei Verwendung mit pathspec, hat ein leeres Verzeichnis in seiner Ausgabe gespeichert, obwohl Git selbst dies niemals tut.
Dies wurde behoben.
Siehe Commit 4318094 (12. September 2017) von René Scharfe (``) .
Vorgeschlagen von: Jeff King ( peff) .
(Zusammengeführt von Junio C Hamano - gitster- in Commit 62b1cb7 , 25. September 2017)
archive: Fügen Sie keine leeren Verzeichnisse zu Archiven hinzu
Während git keine leeren Verzeichnisse verfolgt, git archivekann es dazu gebracht werden, einige in Archive zu stellen.
Dies wird zwar von der Objektdatenbank unterstützt, kann jedoch nicht im Index dargestellt werden und ist daher in freier Wildbahn unwahrscheinlich.
Da leere Verzeichnisse von git nicht unterstützt werden, sollten sie auch nicht in Archive geschrieben werden.
Wenn ein leeres Verzeichnis wirklich benötigt wird, kann es verfolgt und archiviert werden, indem eine leere .gitignoreDatei darin abgelegt wird.