5584 votes

Comment déterminer l'URL à partir de laquelle un dépôt Git local a été cloné à l'origine ?

J'ai retiré un projet de GitHub il y a quelques jours. J'ai découvert depuis qu'il existe plusieurs forks sur GitHub, et j'ai négligé de noter lequel j'ai pris à l'origine.

Comment puis-je déterminer laquelle de ces fourches j'ai tiré ?

303 votes

Avec git 2.7 (Q4 2015), git remote get-url origin sera possible. Voir ma réponse ci-dessous

37 votes

git remote get-url origin ne fonctionne pas pour moi - peut-être déprécié ? git remote show origin a fonctionné cependant.

86 votes

git remote -v vous donner beaucoup d'informations, dont celle-ci.

7768voto

JaredPar Points 333733

Si vous souhaitez uniquement l'URL distante, ou si vous n'êtes pas connecté à un réseau qui peut atteindre le dépôt distant :

git config --get remote.origin.url

Si vous avez besoin d'une sortie complète et que vous sont sur un réseau qui peut atteindre le repo distant où réside l'origine :

git remote show origin

Lorsque vous utilisez git clone (de GitHub, ou de tout autre dépôt de sources), le nom par défaut de la source du clone est "origin". Utilisation de git remote show affichera les informations sur ce nom distant. Les premières lignes devraient être affichées :

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

Si vous voulez utiliser la valeur dans le script, vous utiliserez la première commande listée dans cette réponse.

3 votes

Utilisez git config comme décrit ci-dessous à la place si vous utilisez jgit avec amazon-s3.

7 votes

Bien que cela n'ait rien à voir avec l'objet de la question initiale, veuillez noter que si vous tentez d'obtenir l'"URL de poussée" et que plusieurs URL sont saisies pour la télécommande spécifiée, vous devrez utiliser soit git remote show origin (optionnellement avec l'option -n fournie par @Casey), ou avec git remote -v comme suggéré par @Montaro et @rodel.

0 votes

Dans quel fichier cela est-il écrit ? Je pensais que le .gitconfig Le dossier l'aurait, mais je ne l'ai pas vu dans le mien.

789voto

Jefromi Points 127932

Si vous voulez l'utiliser à des fins de script, vous pouvez obtenir seulement l'URL avec

git config --get remote.origin.url

58 votes

C'est la bonne réponse. C'est beaucoup plus rapide et cela fonctionne même si l'url distante n'est plus disponible ( git remote show origin affiche simplement "conq : repository does not exist.").

11 votes

Ce n'est pas tout à fait la bonne réponse à cause de l'option de configuration. url.<base>.insteadOf . Voir ma réponse - git a une commande à cet effet.

2 votes

@arcresu Cool, +1 à toi ! Pour ma défense, cette commande n'a pas été ajoutée avant mars 2011, et elle n'a pas été documentée avant septembre 2012.

783voto

Montaro Points 1085

Vous pouvez essayer :

git remote -v

Il imprimera toutes les URLs de vos télécommandes (fetch/push).

1 votes

@Montaro exactement, sans elle, seul le nom de la télécommande est imprimé (ex. origin ).

326voto

arcresu Points 1702

Pour obtenir la réponse :

git ls-remote --get-url [REMOTE]

C'est mieux que de lire la configuration ; reportez-vous à la rubrique page de manuel pour git-ls-remote :

--get-url

Développe l'URL du référentiel distant donné en tenant compte des éléments suivants de tout "url.<base>.insteadOf" (Voir git-config(1) ) et sortir sans parler à la télécommande.

Comme l'a souligné @Jefromi, cette option a été ajoutée en v1.7.5 et non documenté jusqu'à ce que v1.7.12.2 (2012-09).

2 votes

Bonne idée : cela permettrait également d'obtenir la même chose pour les versions antérieures > git remote -v| grep fetch|awk '{print $2}''

2 votes

Je pense que la plupart des autres réponses sont plus une démonstration des commandes git et une exposition de l'histoire de git. C'est la seule réponse qui ne suppose pas que votre amont s'appelle origin .

0 votes

Il s'agit du remplacement le plus direct de l'ancien remote get-url option. C'est un remplacement facile.

150voto

動靜能量 Points 33008

Pour résumer, il y a au moins quatre façons de procéder :

Je l'essaie en utilisant le dépôt officiel de Linux :

Le moins d'informations :

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

et

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

Plus d'informations :

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

Encore plus d'informations :

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

11 votes

Nota git config --get remote.origin.url récupère l'URL originale qui a été définie avec git remote add ... o git remote set-url ... tandis que git ls-remote --get-url origin récupère l'URL qui est effectivement utilisée pour accéder au site distant - qui peut être différent en présence de git config --global url.XXX.insteadOf YYY . Les deux sorties peuvent donc différer ! Notez également que git ls-remote --get-url (sans origin ) ne récupère pas nécessairement origin Au lieu de cela, il affiche le suivi en amont, ce qui fait qu'il échouera par exemple dans l'état détaché HEAD.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X