Trovare il nome del repository originale da cui hai clonato in Git


Risposte:


91

Nella radice del repository, il .git/configfile contiene tutte le informazioni su repository e rami remoti. Nel tuo esempio, dovresti cercare qualcosa come:

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

Inoltre, il comando Git git remote -vmostra il nome e l'URL del repository remoto. Il repository remoto "origin" di solito corrisponde al repository originale, da cui è stata clonata la copia locale.


16
Puoi anche usare git remote show originper vedere molte più informazioni su quel telecomando.
Cascabel

1
Sembra che questi due metodi nella risposta siano equivalenti: sembra git remote -vche legga e scriva .git/config.
flow2k

103
git config --get remote.origin.url

2
Concordato; questa è la cosa migliore perché non richiede una connessione / autenticazione al server remoto git. OP ha chiesto "usando il tuo repository locale" ma git remote show originchiama la rete.
Travis Wilson

1
Questo avvolto in un nome di base come la risposta di Casey funziona bene
Jonathan Drapeau

29

Questo è il comando Bash rapido, che probabilmente stai cercando, stamperà solo un nome di base del repository remoto:

Dove si recupera da :

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

In alternativa, dove si spinge a :

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

Soprattutto l' -nopzione rende il comando molto più veloce.


11

Io uso questo:

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

Che restituisce qualcosa di simile gitRepo. (Rimuovi .gitalla fine del comando per restituire qualcosa di similegitRepo.git .)

(Nota: richiede la versione Git 2.7.0 o successiva)


2

Mi sono imbattuto in questa domanda cercando di ottenere la organization/repostringa da un host git come github o gitlab.

Questo funziona per me:

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

Utilizza sedper sostituire l'output del git configcomando con solo l'organizzazione e il nome del repository.

Qualcosa di simile github/scientistsarebbe trovato dalla classe di caratteri [[:graph:]]nell'espressione regolare.

Il messaggio \1dice a sed di sostituire tutto con solo i caratteri abbinati.


errore di battitura alla fine dice .get invece di .git ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence

Grazie @MSillence, risolto.
jhnstn

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

È stato testato con tre diversi stili di URL:

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
spiega cosa hai fatto, come rispondere
Maher

Forse aggiungere ulteriori informazioni, ad esempio sulla dipendenza da Ruby e su quale piattaforma è stata testata (incl. Informazioni sulla versione).
Peter Mortensen,

0

Questo funzionerà per ottenere il valore.

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

0

Versione Powershell del comando per git repo name:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.