我无法再克隆任何存储库。
$ 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
我手动重新创建了一个名为 的存储p2
库Bitbucket
。我尝试克隆它:
$ 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
存储了与最新存储库相关的信息。 p2
Git 更新命令 - 克隆、推送、拉取 - 将无法工作,除非我p2
在Bitbucket
.一旦我这样做了,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
--global
repo/.git/config
关于 git 配置的附加文档:https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration