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/configarquivo 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 -vmostra 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 originpara ver muito mais informações apenas sobre esse controle remoto.
git remote -vapenas lê e escreve .git/config.
git config --get remote.origin.url
git remote show originchama 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 -nopção torna o comando muito mais rápido.
Eu tropecei nessa questão tentando obter a organization/repostring 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 sedpara substituir a saída do git configcomando apenas com o nome da organização e do repo.
Algo como github/scientistseria correspondido pela classe de caractere [[:graph:]]na expressão regular.
O \1diz 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'