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.