Sprawdzanie nazwy oryginalnego repozytorium, z którego sklonowałeś w Git

Odpowiedzi:

91

W katalogu głównym repozytorium .git/configplik zawiera wszystkie informacje o zdalnych repozytoriach i oddziałach. W swoim przykładzie powinieneś poszukać czegoś takiego:

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

Ponadto polecenie Git git remote -vwyświetla nazwę i adres URL zdalnego repozytorium. Zdalne repozytorium „pochodzenia” zwykle odpowiada oryginalnemu repozytorium, z którego sklonowano lokalną kopię.

allait
źródło
16
Możesz także użyć, git remote show originaby zobaczyć znacznie więcej informacji o tym pilocie.
Cascabel
1
Wygląda na to, że te dwie metody są w odpowiedzi są równoważne - wydaje się, że git remote -vpo prostu czyta i pisze .git/config.
flow2k
103
git config --get remote.origin.url
Straff
źródło
2
Zgoda; jest to najlepsze, ponieważ nie wymaga połączenia / autoryzacji ze zdalnym serwerem git. OP zapytał „używając lokalnego repozytorium”, ale git remote show originwoła do sieci.
Travis Wilson
1
To zawinięte w podstawową nazwę, ponieważ odpowiedź Casey działa dobrze
Jonathan Drapeau
29

To jest szybkie polecenie Bash, którego prawdopodobnie szukasz, wypisze tylko podstawową nazwę zdalnego repozytorium:

Gdzie można pobrać z :

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

Alternatywnie, gdy naciskasz, aby :

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

Szczególnie ta -nopcja sprawia, że ​​polecenie jest znacznie szybsze.

Casey
źródło
11

Używam tego:

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

Który zwraca coś w stylu gitRepo. (Usuń znak .gitna końcu polecenia, aby zwrócić coś podobnego gitRepo.git).

(Uwaga: wymaga Git w wersji 2.7.0 lub nowszej)

adzenith
źródło
2

Natknąłem się na to pytanie, próbując pobrać organization/repociąg z hosta git, takiego jak github lub gitlab.

To działa dla mnie:

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

Używa seddo zastąpienia danych wyjściowych git configpolecenia tylko nazwą organizacji i repozytorium.

Coś podobnego github/scientistzostanie dopasowane przez klasę znaków [[:graph:]]w wyrażeniu regularnym.

\1Nakazuje sed zastąpić wszystko z zaledwie dopasowanych znaków.

jhnstn
źródło
literówka koniec mówi .get zamiast .git ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence
Dzięki @MSillence, naprawione.
jhnstn
0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

Został przetestowany z trzema różnymi stylami adresów 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: [email protected]: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'
haolun
źródło
1
wyjaśnij, co zrobiłeś, jak odpowiedzieć
Maher
Być może dodaj więcej informacji, np. O zależności od Rubiego i na jakiej platformie było to testowane (w tym informacje o wersji).
Peter Mortensen
0

To zadziała, aby uzyskać wartość.

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

Wersja polecenia PowerShell dla nazwy repozytorium git:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
Zwycięzca
źródło