Quando você está trabalhando em algum diretório Git, como você pode obter o nome do repositório Git em algum repositório Git? Existem comandos Git?
# I did check out bar repository and working in somewhere
# under bar directory at this moment such as below.
$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar
git
repository
empresa gip
fonte
fonte
Respostas:
Bem, se, para o nome do repositório, você quer dizer o nome do diretório raiz do Git (aquele que contém o diretório .git), você pode executar isso:
A
git rev-parse --show-toplevel
parte fornece o caminho para esse diretório ebasename
retira a primeira parte do caminho.fonte
.git
subdiretório, portanto não é verdade que "se, para o nome do repositório, você quer dizer o nome do diretório raiz do git".sed -n '1 p' test.ip | basename
basename`git rev-parse --show-toplevel
: / var / www "?? Como você provavelmente vê que esta linha não funcionará, causa o uso de `` inside ''git --git-dir=<some git repo>/.git rev-parse --show-toplevel
e ele vai lhe dar de volta / var / www / htmlEm geral, você não pode fazer isso. O Git não se importa com o nome do seu repositório git. Por exemplo, você pode renomear o diretório que contém seu repositório (um com
.git
subdiretório) e o git nem notará isso - tudo continuará funcionando.No entanto, se você o clonou, pode usar o comando:
para exibir muitas informações sobre o controle remoto original das quais você clonou seu repositório e ele conterá o URL do clone original.
Se, no entanto, você removeu o link para o uso remoto original
git remote rm origin
, ou se você criou esse repositório usandogit init
, é impossível obter essas informações - elas não existem em nenhum lugar.fonte
git branch
:): (o ramo ativo será marcado com estrela*
).Não é necessário entrar em contato com o repositório para obter o nome, e o nome da pasta não refletirá necessariamente o nome remoto.
Eu descobri que essa é a maneira mais precisa e eficiente de obter o nome do repositório atual:
Isso deve funcionar a partir do Git 1.8.1.5. Antes disso, o
git-repo-config
comando agora descontinuado teria funcionado (já no Git 1.7.5).fonte
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
No git v2.7.0 + , um subcomando
get-url
foi introduzido nogit-remote
comando.Shell POSIX:
PowerShell:
fonte
.git
final da minha string usando esse método, então adicionei uma divisão para removê-la:(git remote get-url origin | Split-Path -leaf).split('.')[0]
trim()
:def repo = powershell(returnStdout: true, script: "(git remote get-url origin | Split-Path -leaf).split('.')[0]" ).trim()
Outras respostas ainda não funcionarão quando o nome do seu diretório não corresponder ao nome do repositório remoto (e poderia). Você pode obter o nome real do repositório com algo assim:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
Basicamente, você chama
git remote show origin
, pega o URL do repositório no campo "Buscar URL:" e regexa-o para obter a parte com o nome: https://github.com/dragn/ neat-vimrc .gitfonte
git remote show origin -n
para evitar isso..git
outra chamadased
, atualizei o código na resposta. Dessa forma, ele funcionará quando o URL não terminar com.git
.sed
funcionou melhor no meu Mac OSX:git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
Se você está tentando obter o nome de usuário ou nome da organização E o projeto ou o nome do repositório no github, consegui escrever este comando que funciona para mim localmente, pelo menos.
Este é o resultado desejado, assim como
Vydia
o nome da organização egourami
o nome do pacote. Combinados, eles podem ajudar a formar oUser/Repo
caminho completofonte
Eu acho que essa é uma maneira melhor de identificar inequivocamente um clone de um repositório.
git config --get remote.origin.url
e verificando se a origem correspondessh://your/repo
.fonte
Um pouco tarde para esta pergunta, mas se você:
Você verá o URL do repositório, que incluirá o novo nome:
fonte
Nome completo do repositório:
fonte
Essa abordagem
git-remote
funcionou bem para mim para controles remotos HTTPS:Exemplo
fonte
Aqui está uma função bash que imprimirá o nome do repositório (se tiver sido configurado corretamente):
Explicação:
Isso é executado
git rev-parse --git-dir
, o que imprime o caminho completo para o.git
diretório do repositório atual. Ele armazena o caminho$gitdir
.Isso é executado
cat ${gitdir}/description
, o que imprime o conteúdo.git/description
do seu repositório atual. Se você nomeou seu repositório corretamente, ele imprimirá um nome. Caso contrário, ele imprimiráUnnamed repository; edit this file 'description' to name the repository.
Se o repositório foi nomeado corretamente, imprima o conteúdo.
De outra forma...
Informe ao usuário que o repositório não foi nomeado.
Algo semelhante é implementado neste script .
fonte
Infelizmente, parece que o Git não possui esse comando embutido. Mas você pode adicioná-lo facilmente com aliases do Git e alguma mágica de shell.
Conforme indicado nesta resposta , você pode usar
git rev-parse --show-toplevel
para mostrar a raiz da sua pasta Git atual.Se você deseja usar isso regularmente, provavelmente é mais conveniente defini-lo como um alias. Para isso, usado
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. Depois disso, você pode usargit root
para ver a pasta raiz do repositório em que está atualmente.Se você quiser usar outro nome de subcomando
root
, substitua simplesmente a segunda parte doalias.root
comando acima pelo que desejar.Para detalhes sobre aliases no Git, consulte também a
git config
página de manual .fonte
git config --add alias.root 'rev-parse --show-toplevel'
- não há necessidade de jogar no shell para um alias de comando único.Se você deseja o nome completo do repositório do GitHub ('nome completo') - usuário / repositório e deseja fazê-lo com Ruby ...
fonte
Aqui está o meu:
não é melhor que os outros, mas eu fiz uma função bash para que eu possa inserir o nome remoto se não for de origem.
fonte
Também acho que existem algumas informações de repo dentro do
.git
diretório. Então você pode apenas assistirFETCH_HEAD
arquivo no terminal para ver o nome do repositório:Exemplo:
Resultado:
E
https://bitbucket.org/somebituser/some_repo.git
é o nome do seu repositóriofonte
Este funciona muito bem com o git-2.18.2 e pode ser iniciado a partir do repositório externo do git target:
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
fonte
Você pode usar: git remote -v
Documentação: https://git-scm.com/docs/git-remote
fonte
git remote -v
está apenas retornando um ou mais URLs. Como isso está respondendo à pergunta?