Quando você faz seu primeiro clone usando a sintaxe
git clone username@server:gitRepo.git
É possível usar seu repositório local para encontrar o nome desse clone inicial?
(Portanto, no exemplo acima, encontre gitRepo.git
.)
Quando você faz seu primeiro clone usando a sintaxe
git clone username@server:gitRepo.git
É possível usar seu repositório local para encontrar o nome desse clone inicial?
(Portanto, no exemplo acima, encontre gitRepo.git
.)
Respostas:
Na raiz do repositório, o .git/config
arquivo contém todas as informações sobre repositórios remotos e ramos. Em seu exemplo, você deve procurar algo como:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = server:gitRepo.git
Além disso, o comando Git git remote -v
mostra o nome do repositório remoto e a URL. O repositório remoto "origem" geralmente corresponde ao repositório original, do qual a cópia local foi clonada.
git remote show origin
para ver muito mais informações apenas sobre esse controle remoto.
git remote -v
apenas lê e escreve .git/config
.
git config --get remote.origin.url
git remote show origin
chama a rede.
Este é um comando rápido do Bash, que provavelmente você está procurando, imprimirá apenas um nome de base do repositório remoto:
Onde você busca de :
basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)
Alternativamente, onde você empurra para :
basename $(git remote show -n origin | grep Push | cut -d: -f2-)
Especialmente a -n
opção torna o comando muito mais rápido.
Eu tropecei nessa questão tentando obter a organization/repo
string de um host git como github ou gitlab.
Isso está funcionando para mim:
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
Ele é usado sed
para substituir a saída do git config
comando apenas com o nome da organização e do repo.
Algo como github/scientist
seria correspondido pela classe de caractere [[:graph:]]
na expressão regular.
O \1
diz ao sed para substituir tudo apenas pelos caracteres correspondentes.
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'
Ele foi testado com três estilos de URL diferentes:
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'