Kiedy wykonujesz swój pierwszy klon przy użyciu składni
git clone username@server:gitRepo.git
Czy można użyć lokalnego repozytorium, aby znaleźć nazwę tego początkowego klonu?
(Więc w powyższym przykładzie znajdź gitRepo.git
.)
Kiedy wykonujesz swój pierwszy klon przy użyciu składni
git clone username@server:gitRepo.git
Czy można użyć lokalnego repozytorium, aby znaleźć nazwę tego początkowego klonu?
(Więc w powyższym przykładzie znajdź gitRepo.git
.)
Odpowiedzi:
W katalogu głównym repozytorium .git/config
plik 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 -v
wyświetla nazwę i adres URL zdalnego repozytorium. Zdalne repozytorium „pochodzenia” zwykle odpowiada oryginalnemu repozytorium, z którego sklonowano lokalną kopię.
git remote show origin
aby zobaczyć znacznie więcej informacji o tym pilocie.
git remote -v
po prostu czyta i pisze .git/config
.
git config --get remote.origin.url
git remote show origin
woła do sieci.
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 -n
opcja sprawia, że polecenie jest znacznie szybsze.
Natknąłem się na to pytanie, próbując pobrać organization/repo
cią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 sed
do zastąpienia danych wyjściowych git config
polecenia tylko nazwą organizacji i repozytorium.
Coś podobnego github/scientist
zostanie dopasowane przez klasę znaków [[:graph:]]
w wyrażeniu regularnym.
\1
Nakazuje sed zastąpić wszystko z zaledwie dopasowanych znaków.
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
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: 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'