git retém informações remotas de um repositório excluído

0

Não consigo mais clonar nenhum repositório.

$ git clone [email protected]:myaccount/myrep.git
Cloning into 'myrep'...
conq: repository does not exist.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

O problema é que minha chave ssh id_rsa ainda é a mesma. Eu recriá-lo de qualquer maneira, atualizei-o nas chaves ssh da minha conta BitBucket , e o mesmo erro aparece quando tento clonar meu repositório. Eu tentei o mesmo procedimento em outra máquina (redhat) e o git clone funcionou. Então, há algo acontecendo com git .

Então eu fui em outro projeto de versão do git:

$ cd share-repo

$ ls -a
./          ../         .git/       .gitignore* f1*         f2*

Eu imprimo o arquivo git config :

$ cat .git/config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = [email protected]:myaccount/share-repo.git
[branch "master"]
[user]
    name = myaccount

Eu tento um pull :

$ git pull -v
conq: repository does not exist.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Ok, vamos tentar um empurrão?

$ git push -v origin master
Pushing to [email protected]:myaccount/p2.git
conq: repository does not exist.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Huh? Git tenta empurrar para o repositório p2? Deve tentar empurrar para share-repo ... Como diabos ele está tentando empurrar para um repositório cujo nome é p2? De fato, eu tive um repo chamado p2 esta manhã, mas eu deletei da minha conta BitBucket enquanto fazia alguns testes, então eu removi a pasta relacionada p2 do meu computador. Como git reteve informações sobre p2 ? E acima de tudo, onde é armazenado, como posso redefini-lo?

$ git remote -v
origin  [email protected]:myaccount/p2.git (fetch)  # ?!
origin  [email protected]:myaccount/p2.git (push)   # ?!
origin  [email protected]:myaccount/share-repo.git (push)

Estranho, como vimos anteriormente, o arquivo git config contém apenas informações sobre o repo share-repo . Também tentei localizar a string p2 na pasta inteira:

$ grep -Rin p2 ../share-repo/
# Nothing

Eu criei um repositório manualmente chamado p2 in Bitbucket . Eu tentei clonar:

$ cd ..

$ git clone [email protected]:myaccount/p2.git
Cloning into 'p2'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

$ cd p2

$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = [email protected]:myaccount/p2.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

$ git remote -v
origin  [email protected]:myaccount/p2.git (fetch)
origin  [email protected]:myaccount/p2.git (push)
origin  [email protected]:myaccount/p2.git (push)

Ok, o git clone funcionou, mas agora ele referencia duas linhas extras para os remotos, uma das quais é duplicada. Lembre-se dessas linhas extras ao trabalhar com o repo share-repo ? É sobre as primeiras duas linhas que ainda estão relacionadas ao antigo repo p2 que eu havia deletado.

Vamos tentar empurrar algumas alterações:

$ git touch .gitignore

$ git add .gitignore

$ git commit -m "first commit"

$ git push -v origin master
Pushing to [email protected]:myaccount/p2.git
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:myaccount/p2.git
 * [new branch]      master -> master
updating local tracking ref 'refs/remotes/origin/master'
Pushing to [email protected]:myaccount/p2.git
To [email protected]:myaccount/p2.git
 = [up to date]      master -> master
updating local tracking ref 'refs/remotes/origin/master'
Everything up-to-date

Então, o git empurrou para repo p2 e tentou fazer isso uma segunda vez, já que os dois repos têm o mesmo nome e a mesma localização na minha conta bitbucket , então obviamente descobriu que tudo estava atualizado.

Agora, eu poderia clonar qualquer repositório que eu queira, contanto que o repo p2 exista na minha conta Bitbucket . Se eu quisesse push algumas mudanças em digamos share-repo , isso funcionaria, mas o git também tentaria empurrar as mesmas mudanças para o repositório p2 . É uma bagunça que eu me meti e não sei como resolver isso.

Para resumir, eu tive esta manhã um repositório chamado p2 que eu deletei de bitbucket , então eu apaguei sua pasta do meu computador. Desde então, qualquer que seja o projeto git eu cd em, git remote -v me mostra que ele tem armazenado - em algum lugar - informações relacionadas ao repo final p2 , em cima do repositório atual que estou trabalhando. Os comandos de atualização do Git - clone, push, pull - não funcionarão a menos que eu crie de volta esse repo p2 on Bitbucket . Depois de fazer isso, os comandos de atualização do git aplicarão os comandos ao repositório atual em que estou trabalhando, bem como ao repo p2.

p2 não é o único repositório que eu excluí hoje, então estou curioso para saber o que aconteceu aqui.

Terei todo o prazer em receber toda a ajuda possível.

    
por kaligne 09.07.2016 / 04:21

1 resposta

1

Resolvido. Estou sem palavras. Eu tinha feito uma verificação rápida para um arquivo ~/.git-whatever usando autocompletar bash (guia), ele não funcionou, então eu assumi cegamente que o problema estava em outro lugar. O comentário de Patrick esclareceu: Eu cuidadosamente verifiquei usando ls -a ~/ , o ~/.gitconfig sobre o qual ele realmente escreveu está aqui, e ele contém as informações sobre o controle remoto:

$ cat ~/.gitconfig
[user]
   name = myaccount
   email = [email protected]
[remote "origin"]
   push = [email protected]:myaccount/p2.git

E agora eu lembro a causa disso: ao experimentar, usei o comando git config --global remote.origin [email protected]:myaccount/p2.git e alterei outras configurações globais. Eu simplesmente não entendi o que o --global fez porque não encontrei nenhuma alteração no arquivo repo/.git/config .

Documento adicional sobre a configuração do git: link

    
por 09.07.2016 / 12:04