Mit dem gewünschten Befehl git ls-remote
können Sie einige Informationen zu Remote-Repositorys abrufen, aber Sie können keine Verlaufs- oder Listenverzeichnisse oder ähnliches anzeigen. Im Wesentlichen können Sie die Remote-Objekte nur auf einer sehr hohen Ebene anzeigen (Sie können die aktuelle HEADs und Tags zum Beispiel).
Die einzige echte Möglichkeit, das zu tun, was Sie wollen (wenn ich es richtig verstehe), besteht darin, mit ssh einen Remote-Befehl auszuführen und die Ergebnisse zurückzugeben, zum Beispiel:
ssh me@otherhost "cd repo && git log -n 10"
Was Sie wollen, wäre eine schöne Funktionalität, wenn sie es hinzufügen könnten, aber nach dem, was ich gelesen habe, ist es nicht sehr einfach, da das Abrufen von Verlauf usw. viele Informationen benötigt, um lokal zu sein, und an diesem Punkt könnten Sie auch einen Git-Abruf durchgeführt haben .
git clone
, ist, nur eine einzige Revision durch Bestehen abzurufen--depth 1
. Dies vermeidet das Abrufen potenziell großer Mengen an Verlauf und würde ausreichen, um Fragen wie "Welche Dateien sind in der Revision vorhandenabcdef1234567890
?" Zu beantworten.Git ist ein verteiltes Versionskontrollsystem, während Subversion ein zentrales Versionskontrollsystem (Client-Server) ist. Sie arbeiten anders; gewöhne dich daran. Bitte lesen Sie meine Antwort, in der die Konsequenzen dieses Unterschieds zum Git-Äquivalent der
svn status -u
Frage bei StackOverflow erläutert werden .Ich wiederhole mich ein bisschen: In einem zentralen Versionskontrollsystem (wie CVS oder Subversion) werden fast alle Befehle auf dem Server verarbeitet und beziehen das Netzwerk mit ein. Sehr wenige Befehle werden lokal ausgeführt. Beachten Sie, dass Subversion für eine gute Leistung von "svn status" und "svn diff" eine "makellose Kopie" der ausgecheckten Version auf dem Client speichert und für diese allgemeinen Vorgänge keine Netzwerkübertragung erforderlich ist (dies bedeutet, dass Subversion checkout = 2 x ist) Größe des Arbeitsverzeichnisses mindestens).
In einem verteilten Versionskontrollsystem (wie Git, Mercurial oder Bazaar), in dem Sie eine lokale Kopie (Klon) eines gesamten Repositorys haben, werden fast alle Befehle auf dem Client ausgeführt . Sehr wenige Befehle erfordern eine Netzwerkverbindung zu einem anderen Repository (zum Server).
Die Anzahl der Befehle, die Sie auf dem Server ausführen können, ist begrenzt.
" git archive --remote = <URL> HEAD" können Sie eine Momentaufnahme (eines Teils) des Repositorys abrufen (sofern der Remote-Server dies aktiviert hat) .
" git clone --depth = 1 <URL>" klonen .
quelle
Unter http://git-scm.com/book/en/Git-Internals-Transfer-Protocols finden Sie Informationen dazu, wie Sie dies über einige Transportprotokolle tun können. Beachten Sie, dass dies für Standard-Git über SSH nicht funktioniert.
Für Git über SSH sollte ein aktuelles serverseitiges Git es Ihnen ermöglichen, das Git-Archiv direkt von der Fernbedienung aus zu archivieren. Anschließend können Sie beispielsweise eine Pipe an "tar t" senden, um eine Liste aller Dateien in einem bestimmten Commit abzurufen.
quelle
GitHub ist svn-kompatibel, sodass Sie svn ls verwenden können
BitBucket unterstützt das Git-Archiv, sodass Sie das Tar-Archiv herunterladen und archivierte Dateien auflisten können. Es ist nicht sehr effizient, funktioniert aber:
quelle
Nicht das genaue, aber ein Weg herum.
Verwenden Sie die GitHub Developer API
Wenn Sie dies öffnen, erhalten Sie die letzten Commits.
https://api.github.com/repos/learningequality/ka-lite/commits
Sie können die spezifischen Festschreibungsdetails abrufen, indem Sie den Festschreibungs-Hash am Ende der obigen URL anhängen.
Alle Dateien (Sie benötigen sha für den Hauptbaum)
https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01
Ich hoffe das kann helfen.
quelle
Dies wird wahrscheinlich von einigen als schmutzig angesehen, aber eine sehr praktische Lösung im Fall von Github-Repositories besteht darin, nur ein Skript zu erstellen, z. B. "git-ls":
Machen Sie es natürlich ausführbar und erreichbar :
chmod a+x git-ls; sudo cp git-ls /usr/local/bin
. Jetzt führen Sie es einfach aus, wie Sie möchten:Beachten Sie auch, dass es ein
git instaweb
Dienstprogramm für Ihre lokalen Dateien gibt. Die Fähigkeit, Dateien anzuzeigen und einen solchen Server zu haben, zerstört meiner Meinung nach keine der inhärenten dezentralen Eigenschaften von git.quelle
curl -s https://github.com/Itseez/opencv | grep js-directory-link | sed 's|.* title="\(.*\)".*|\1|'
Wenn Sie den Remote-Zweig kennen, den Sie überprüfen möchten, können Sie die neuesten Informationen erhalten über:
quelle