criar - Como posso determinar o URL do qual um repositório Git local foi originalmente clonado?



git clone windows (13)

Para obter o endereço IP / nome de host de origin

Para ssh:// repositórios:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

Para git:// repositories:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"

https://src-bin.com

Eu tirei um projeto do GitHub alguns dias atrás. Desde então descobri que existem vários garfos no GitHub, e deixei de notar qual deles eu usei originalmente. Como posso determinar quais desses garfos eu peguei?


Answer #1

Com git remote show origin você precisa estar no diretório de projetos. Mas se você quiser determinar os URLs de qualquer outro lugar que você possa usar:

cat <path2project>/.git/config | grep url

Se você precisar desse comando com freqüência, poderá definir um alias no seu .bashrc ou .bash_profile com o MacOS.

alias giturl='cat ./.git/config | grep url'

Então você só precisa chamar o giturl na pasta raiz do Git para simplesmente obter seu URL.

Se você estender esse alias como este

alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'

você obtém apenas o URL simples sem o precedente

"url ="

em

url = http://example.com/repo.git

você tem mais possibilidades em seu uso:

Exemplo

No Mac, você poderia chamar open $(giturl) para abrir o URL no navegador padrão.

Ou chrome $(giturl) para abri-lo com o navegador Chrome no Linux.


Answer #2

Eu acho que você pode encontrá-lo sob .git/config e remote["origin"] se você não manipulou isso.


Answer #3

Eu basicamente uso:

git remote get-url origin

Ele funciona para o console de comando do Git Bash ou para o console de comando do CMD no Windows. Dito isto, funciona com a versão 2.x do Git.


Answer #4

Imprimir URLs de busca remota nomeadas arbitrariamente:

git remote -v | grep fetch | awk '{print $2}'

Answer #5

O URL do Git estará dentro do arquivo de configuração do Git. O valor corresponde ao url da chave:

 cd project_dir
 cat .git/config | grep url | awk '{print $3}'

Answer #6

Para obter a resposta:

git ls-remote --get-url [REMOTE]

Isso é melhor que ler a configuração; consulte a página man do git-ls-remote :

--get-url

Expanda a URL do repositório remoto dado levando em conta qualquer configuração de configuração "url.<base>.insteadOf" (Veja git-config(1) ) e saia sem falar com o controle remoto.

Como apontado por @Jefromi, esta opção foi adicionada na v1.7.5 e não documentada até v1.7.12.2 (2012-09).


Answer #7

Para resumir, existem pelo menos quatro maneiras:

(O seguinte foi tentado para o repositório oficial do Linux)

Menos informação:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

e

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

Mais Informações:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

Ainda mais informações:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

Answer #8

Podes tentar:

git remote -v

Ele imprimirá todos os URLs de busca / envio dos seus remotos.


Answer #9

Resposta curta:

$ git remote show -n origin

ou, uma alternativa para scripts rápidos puros:

$ git config --get remote.origin.url

Algumas informações:

  1. $ git remote -v imprime todos os controles remotos (não o que você quer). Você quer a origem certa?
  2. $ git remote show origin muito melhor, mostra apenas a origin mas leva muito tempo (testado no git versão 1.8.1.msysgit.1).

Acabei com: $ git remote show -n origin , que parece ser o mais rápido. Com -n não irá buscar cabeças remotas (ramos AKA). Você não precisa desse tipo de informação, certo?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

Você pode aplicar | grep -i fetch | grep -i fetch todas as três versões para mostrar apenas o URL de busca.

Se você precisar de velocidade pura, use:

$ git config --get remote.origin.url

Obrigado ao @Jefromi por apontar isso.


Answer #10

Se você quiser apenas o URL remoto ou a integridade referencial foi quebrada:

git config --get remote.origin.url

Se você precisar de saída completa ou a integridade referencial estiver intacta:

git remote show origin

Ao usar o git clone (do GitHub ou de qualquer repositório de origem), o nome padrão da origem do clone é "origin". Usando o git remote show irá exibir as informações sobre este nome remoto. As primeiras linhas devem mostrar:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: [email protected]:jaredpar/VsVim.git
  Push  URL: [email protected]:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

Se você quiser usar o valor no script, use o primeiro comando listado nesta resposta.


Answer #11

Se você quiser isso para fins de script, você pode obter apenas o URL com

git config --get remote.origin.url

Answer #12
#!/bin/bash

git-remote-url() {
 local rmt=$1; shift || { printf "Usage: git-remote-url [REMOTE]\n" >&2; return 1; }
 local url

 if ! git config --get remote.${rmt}.url &>/dev/null; then
  printf "%s\n" "Error: not a valid remote name" && return 1
  # Verify remote using 'git remote -v' command
 fi

 url=`git config --get remote.${rmt}.url`

 # Parse remote if local clone used SSH checkout
 [[ "$url" == [email protected]* ]] \
 && { url="https://github.com/${url##*:}" >&2; }; \
 { url="${url%%.git}" >&2; };

 printf "%s\n" "$url"
}

Uso:

# Either launch a new terminal and copy `git-remote-url` into the current shell process, 
# or create a shell script and add it to the PATH to enable command invocation with bash.

# Create a local clone of your repo with SSH, or HTTPS
git clone [email protected]:your-username/your-repository.git
cd your-repository

git-remote-url origin

Saída:

https://github.com/your-username/your-repository




git-remote