Parcourir et afficher les fichiers dans un repo git sans clonage
Est-il un moyen de parcourir et afficher les fichiers dans un repo git sans clonage d'abord? Je peux faire ceux svn en utilisant les commandes:
svn ls /chemin/vers/repo svn cat /chemin/vers/repo/fichier-dans-repo
Je peut supposément à l'utilisation de git show, mais le faire:
git show /chemin/vers/repo git show TÊTE:/chemin/vers/repo
résultat à
fatale: Pas un dépôt git
Vous devez vous connecter pour publier un commentaire.
La commande que vous voulez est
git ls-distance
qui vous permet d'obtenir quelques informations sur les dépôts distants, mais tu ne peux pas afficher l'historique ou de la liste de répertoires ou quelque chose de ce niveau: pour l'essentiel, il ne vous permet de voir les objets à distance à un très haut niveau (vous pouvez voir les dirigeants actuels et balises, par exemple).Le seul vrai moyen de faire ce que vous voulez (si j'ai bien compris) serait d'utiliser ssh pour exécuter une commande à distance et de retourner les résultats, par exemple:
Ce que vous voulez serait joli fonctionnalité s'ils pouvaient ajouter, mais de ce que j'ai lu c'est pas très facile depuis l'obtention de l'histoire etc a besoin de beaucoup d'informations locales à git, et à ce stade, vous pourriez aussi bien avoir fait un git fetch.
git clone
, cependant, est d'extraire uniquement une seule révision en passant--depth 1
. Cela évite la corvée d'potentiellement de grandes quantités de l'histoire, et serait suffisant pour répondre à des questions comme "quels sont les fichiers présents dans la révisionabcdef1234567890
?"Git est distribué système de contrôle de version, alors que la Subversion est centralisée (client-serveur) système de contrôle de version. Ils fonctionnent différemment; vous y habituer. Merci de lire ma réponse d'expliquer les conséquences de cette différence de git équivalent de
svn status -u
question sur StackOverflow.De me répéter un peu: dans un système de contrôle de version (comme CVS ou Subversion) presque toutes les commandes sont traitées sur le serveur, et impliquent de réseau. Très peu de commandes sont effectuées localement. Notez que pour avoir de bonnes performances de "svn status" et "svn diff" la Subversion des magasins de copie primitive " des extraits de la version du client, de ne pas avoir à impliquer le transfert de réseau pour ces opérations communes (ce qui signifie que Subversion = 2 x la taille de répertoire de travail au moins).
Distribués système de contrôle de version (comme Git, Mercurial ou Bazar), où vous avez locales copie (clone) de l'ensemble du référentiel, presque toutes les commandes sont effectuées sur le client. Très peu de commandes, il faut que la connexion réseau à un autre dépositaire (au serveur).
Le nombre de commande que vous pouvez effectuer sur le serveur est limité.
"git archive --distance=<URL> la TÊTE".
"git clone --depth=1 <URL>".
git log
y a beaucoup de "bump version" s'engage et si vous voulez savoir ce qui a changé, avec ce "s'habituer à cette" approche, vous devez aller et clone chaque référentiel qui, normalement, ne reçoit cloné sur le serveur de build. Pas très pratique, vous le savez. Donc, il serait vraiment utile si le serveur git pourrait fairelog
ou récupérer des fichiers individuels. Surtout si l'on prend en compte que rien n'empêche effectivement de le faire, sauf pour le "habituer" attitude.Prendre un coup d'oeil à http://git-scm.com/book/en/Git-Internals-Transfer-Protocols pour plus d'informations sur la façon de faire de certains protocoles de transport. Remarque cela ne fonctionne pas pour norme de git via SSH.
Pour git via SSH, une mise à jour côté serveur git devrait vous permettre de git archive directement à partir de la télécommande, ce qui vous pourrait alors par exemple tuyau d' "tar t" pour obtenir une liste de tous les fichiers dans un commit.
GitHub est compatible svn de sorte que vous pouvez utiliser svn ls
BitBucket prend en charge git archive que vous pouvez télécharger l'archive tar et de la liste des fichiers archivés. Il n'est pas très efficace mais qui fonctionne:
Pas exactement, mais un moyen de la contourner.
Utiliser GitHub Développeur API
L'ouverture de ce sera vous de la récente s'engage.
https://api.github.com/repos/learningequality/ka-lite/commits
Vous pouvez obtenir le spécifique de commettre des détails par la fixation de la commettre hachage à la fin de l'url ci-dessus.
Tous les fichiers ( Vous avez besoin de sha pour l'arbre principal)
https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01
J'espère que cela peut aider.
C'est probablement considéré comme sale par certains, mais une solution très pratique en cas de dépôts github est juste pour faire un script, par exemple "git-ls":
De le rendre exécutable et accessible de cours:
chmod a+x git-ls; sudo cp git-ls /usr/local/bin
. Maintenant, vous avez simplement à le faire fonctionner comme vous le souhaitez:Savons aussi qu'il est un
git instaweb
utilitaire pour vos fichiers locaux. Pour avoir la capacité de afficher les fichiers et un serveur qui n'a à mon avis pas détruire tout de la nature décentralisée des caractéristiques de git.curl -s https://github.com/Itseez/opencv | grep js-directory-link | sed 's|.* title="\(.*\)".*|\1|'
si vous connaissez la télécommande direction que vous voulez vérifier, vous pouvez trouver les dernières via: