git 保留已删除存储库中的远程信息

git 保留已删除存储库中的远程信息

我无法再克隆任何存储库。

$ 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.

问题是我的 sshid_rsa密钥仍然是一样的。无论如何,我重新创建了它,在我的BitBucket帐户的 ssh 密钥中更新了它,当我尝试克隆我的存储库时,出现了相同的错误。我在另一台机器(redhat)上尝试了完全相同的过程,并且 git clone 工作了。所以发生了一些事情git

然后我进入另一个 git 版本化项目:

$ cd share-repo

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

我打印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

我尝试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.

好吧,让我们尝试一下推送?

$ 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.

啊?Git尝试推送到存储库 p2?它应该尝试推送到share-repo...它到底是如何尝试推送到名称为 p2 的存储库的?事实上,我p2今天早上有一个名为的存储库,但我在做一些测试时从我的帐户中删除了它,然后我从我的计算机中BitBucket删除了相关文件夹。p2如何git保留有关的信息p2?最重要的是,它存储在哪里,如何重置它?

$ 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)

奇怪的是,正如我们之前看到的,该git config文件仅包含有关 repo 的信息share-repo。我还尝试在整个文件夹中查找字符串 p2:

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

我手动重新创建了一个名为 的存储p2Bitbucket。我尝试克隆它:

$ 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)

好的,git clone成功了,但现在它引用了两条额外的遥控器线,其中一根是重复的。还记得使用存储库时的那些额外行share-repo吗?这是关于前两行,它们仍然与我删除的旧 p2 存储库相关。

让我们尝试推动一些改变:

$ 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

因此 git 推送到存储库 p2,并尝试第二次这样做,因为这两个存储库在我的bitbucket帐户上具有相同的名称和相同的位置,所以它显然发现一切都是最新的。

现在,我可以克隆我想要的任何存储库,只要该存储库存p2在于我的Bitbucket帐户中。如果我想进行push一些更改,比如说share-repo,它会起作用,但 git 也会尝试将相同的更改推送到存储库p2。我把自己陷入了困境,我不知道如何解决。

总而言之,今天早上我有一个名为的存储库p2,我从中删除了它bitbucket,然后我从计算机中删除了它的文件夹。从那时起,无论我cd进入哪个 git 项目,都会向我展示它已经在我正在处理的当前存储库之上git remote -v存储了与最新存储库相关的信息。 p2Git 更新命令 - 克隆、推送、拉取 - 将无法工作,除非我p2Bitbucket.一旦我这样做了,git更新命令就会将命令应用到我正在处理的当前存储库以及存储库p2。

p2不是我今天删除的唯一存储库,所以我很好奇知道这里发生了什么。

我很乐意接受我能得到的所有帮助。

答案1

解决了。我无语。我使用 bash 自动完成功能(选项卡)快速检查了一个~/.git-whatever文件,但它不起作用,所以我盲目地认为问题出在其他地方。帕特里克的评论揭示了这一点:我仔细检查了使用ls -a ~/~/.gitconfig他写的确实在这里,并且它包含有关遥控器的信息:

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

现在我记得这样做的原因:在实验时我使用了该命令并更改了其他全局配置。我只是不明白它做了什么,因为我发现文件中没有更改。git config --global remote.origin [email protected]:myaccount/p2.git--globalrepo/.git/config


关于 git 配置的附加文档:https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

相关内容