Trouver le nom du référentiel d'origine à partir duquel vous avez cloné dans Git


Réponses:


91

Dans la racine du référentiel, le .git/configfichier contient toutes les informations sur les référentiels et les branches distants. Dans votre exemple, vous devriez rechercher quelque chose comme:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = server:gitRepo.git

De plus, la commande Git git remote -vaffiche le nom et l'URL du référentiel distant. Le référentiel distant "d'origine" correspond généralement au référentiel d'origine, à partir duquel la copie locale a été clonée.


16
Vous pouvez également utiliser git remote show originpour voir beaucoup plus d'informations sur cette télécommande.
Cascabel

1
On dirait que ces deux méthodes sont dans la réponse sont équivalentes - il semble git remote -vjuste lire et écrire .git/config.
flow2k

103
git config --get remote.origin.url

2
D'accord; c'est mieux car il ne nécessite pas de connexion / authentification au serveur distant git. OP a demandé "en utilisant votre référentiel local" mais git remote show originappelle le réseau.
Travis Wilson

1
Ceci enveloppé dans un nom de base car la réponse de Casey fonctionne bien
Jonathan Drapeau

29

Il s'agit d'une commande rapide Bash, que vous recherchez probablement, n'imprimera qu'un nom de base du référentiel distant:

Où vous allez chercher de :

basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)

Alternativement où vous poussez pour :

basename $(git remote show -n origin | grep Push | cut -d: -f2-)

Surtout, l' -noption rend la commande beaucoup plus rapide.


11

J'utilise ceci:

basename $(git remote get-url origin) .git

Ce qui renvoie quelque chose comme gitRepo. (Supprimez le .gità la fin de la commande pour renvoyer quelque chose comme gitRepo.git.)

(Remarque: il nécessite la version 2.7.0 ou ultérieure de Git)


2

Je suis tombé sur cette question en essayant d'obtenir le organization/repo chaîne d'un hôte git comme github ou gitlab.

Cela fonctionne pour moi:

git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'

Il utilise sedpour remplacer la sortie de la git configcommande par simplement le nom de l'organisation et du dépôt.

Quelque chose comme github/scientistserait mis en correspondance par la classe de caractères [[:graph:]]dans l'expression régulière.

Le \1dit à sed de tout remplacer par uniquement les caractères correspondants.


typo la fin dit .get au lieu de .git ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence

Merci @MSillence, corrigé.
jhnstn le

0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

Il a été testé avec trois styles d'URL différents:

echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: git@github.com:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

1
Expliquez ce que vous avez fait, comment répondre
Maher

Ajoutez peut-être plus d'informations, par exemple sur la dépendance Ruby et sur quelle plate-forme elle a été testée (y compris les informations de version).
Peter Mortensen

0

Cela fonctionnera pour obtenir la valeur.

#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}

0

Version PowerShell de la commande pour le nom du dépôt git:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
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.