Historique de validation sur le référentiel distant


206

J'essaie d'accéder à l'historique de validation d'une branche sur un référentiel distant. J'ai regardé document, mais pas trouvé d'informations substantielles sur la façon d'accéder à l'historique de validation d'un dépôt distant à l'aide de mon client git local.

Réponses:


252
git log remotename/branchname

Affiche le journal d'une branche distante donnée dans ce référentiel, mais uniquement les journaux que vous avez "récupérés" de leur référentiel vers votre "copie" personnelle du référentiel distant.

N'oubliez pas que votre clone du référentiel mettra à jour son état de toutes les branches distantes uniquement en le faisant git fetch. Vous ne pouvez pas vous connecter directement au serveur pour y consulter le journal, ce que vous faites est de télécharger l'état du serveur avec git fetch, puis de voir localement le journal des branches distantes.

Peut-être qu'une autre commande utile pourrait être:

git log HEAD..remote/branch

qui vous montrera les commits qui se trouvent dans la branche distante, mais pas dans votre branche actuelle ( HEAD).


8
"Vous ne pouvez pas vous connecter directement au serveur pour y vérifier le journal" - c'était le problème que je rencontrais
Brian J

1
Je ne reçois que des modifications locales tirées ... notez les distantes, même en faisant des recherches avant.
Loenix

6
Lorsque vous faites un, git fetchvous devez utiliser --allpour récupérer des télécommandes.
ocodo

25
C'est dommage, donc je dois cloner 2 Go d'objets juste pour regarder dans les journaux de validation?
TWiStErRob

2
Salut @TWiStErRob vous pouvez atténuer la douleur en gérant la quantité de données récupérées avec un clone peu profond (voir --depth dans git-scm.com/docs/git-clone ), puis gérer les récupérations avec (voir "shallow" dans git-scm .com / docs / git-fetch ).
qneill

66

NB. "origine" ci-dessous permet de représenter l'amont d'un référentiel cloné, remplacez "origine" par un nom descriptif pour le dépôt distant. "référence à distance" peut utiliser le même format que celui utilisé dans la commande clone.

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 L'URL Git du référentiel distant, par exemplegit://git.somedomain.tld/some/repo
gertvdijk

1
N'avez-vous pas besoin de spécifier <refspec>lors de la récupération (ou de l'utilisation fetch --all) si vous ne suivez aucune branche sur la télécommande?
gertvdijk

1
Que voulez-vous dire par «fournisseur de projet / diagnostic»? Est-ce un dossier à l'intérieur du référentiel? Une autre branche?
LopSae

1
Un référentiel peut avoir plusieurs branches, mais "projet" n'est pas un terme lié à git, de là la confusion à ce qu'un "projet" signifie dans ce cas. Mais qu'est-ce que cela aurait à voir avec la question?
LopSae

1
Je ne pense pas qu'il soit possible de le faire dans GIT. Vous devez cloner ce référentiel distant avant de pouvoir émettre un journal git sur celui-ci.
user959690

12

Vous pouvez uniquement afficher le journal sur un référentiel local, mais cela peut inclure les branches récupérées de toutes les télécommandes que vous avez configurées.

Donc, si vous clonez un dépôt ...

git clone git@gitserver:folder/repo.git

Ce sera par défaut à origin/master.

Vous pouvez ajouter une télécommande à ce dépôt, à part originajouter production. Depuis le dossier clone local:

git remote add production git@production-server:folder/repo.git

Si jamais nous voulons voir le journal, productionnous devrons faire:

git fetch --all 

Cela récupère à partir de TOUTES les télécommandes (la récupération par défaut sans --allne serait récupérée qu'à partir de origin)

Après avoir récupéré, nous pouvons consulter le journal sur la productiontélécommande, vous devrez également spécifier la branche.

git log production/master

Toutes les options fonctionneront comme avec la connexion aux succursales locales.


12

Un moyen rapide de procéder consiste à cloner à l'aide du --baremot - clé, puis à consulter le journal:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

Je ne pense pas que ce soit possible. Je crois que vous devez cloner ce référentiel distant localement et l'exécuter git fetchavant de pouvoir émettre un git logcontre.


1
imaginez que vous avez déjà cloné le référentiel en local et apporté quelques modifications. . alors vous voulez vérifier si quelqu'un s'est engagé dans le
dépôt à

2
Si vous changez cette réponse en "Ce n'est pas possible", alors c'est la meilleure réponse. Il n'y a aucun moyen d'accéder à l'historique de validation d'un dépôt distant à l'aide d'un client git distant.
2017


2

Je ne sais pas quand le filtrage a été ajouté, mais c'est un moyen d'exclure les objets blob si vous souhaitez uniquement récupérer l'historique / ref-logs:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

C'est parfait . Compte tenu des autres réponses, ce serait génial si cela pouvait se démarquer à côté de la réponse fournie.
Eric Cousineau

0

Vous pouvez facilement obtenir le journal du serveur distant. Voici comment:

(1) Si vous utilisez git via ssh - alors connectez-vous simplement au serveur distant en utilisant votre login et mot de passe git - et chdir le dossier distant où votre référentiel existe - et exécutez la commande "git log" à l'intérieur de votre référentiel sur le serveur distant.

(2) Si vous utilisez git via le protocole de connexion standard d'Unix, alors connectez-vous simplement à votre serveur distant et faites-y un journal git.

J'espère que cela t'aides.


13
Pour reformuler, "vous ne pouvez pas obtenir un journal d'un serveur distant, vous devez vous connecter et obtenir le journal en utilisant un client git local"
qneill

Supprimez simplement cette réponse, elle ne répond pas à la question et ce n'est pas la façon dont la plupart des utilisateurs de git n'ont pas accès au shell du serveur
nhed

0

Voici une fonction bash qui facilite la visualisation des journaux sur une télécommande. Il prend deux arguments facultatifs. Le premier est la branche , elle est par défaut master . Le second est la télécommande , il s'agit par défaut de la mise en scène .

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

exemples:

 $ git_log_remote
 $ git_log_remote development origin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.