git 從已刪除的儲存庫中保留遠端資訊
我不能再複製任何儲存庫了。
$ git clone git@bitbucket.org: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.
問題是我的 ssh
id_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 = git@bitbucket.org: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 git@bitbucket.org: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
事實上,我今天早上有一個名為 repo ,但我BitBucket
在做一些測試時從我的帳戶中刪除了它,然後我p2
從我的電腦中刪除了相關文件夾。是如何git
保留資訊的p2
?最重要的是,它儲存在哪裡,我該如何重置它?$ git remote -v origin git@bitbucket.org:myaccount/p2.git (fetch) # ?! origin git@bitbucket.org:myaccount/p2.git (push) # ?! origin git@bitbucket.org:myaccount/share-repo.git (push)
奇怪的是,正如我們之前看到的,該
git config
文件僅包含有關 repo 的資訊share-repo
。我還嘗試在整個文件夾中定位字元串 p2:$ grep -Rin p2 ../share-repo/ # Nothing
我手動重新創建了一個名為
p2
.Bitbucket
我試圖複製它:$ cd .. $ git clone git@bitbucket.org: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 = git@bitbucket.org:myaccount/p2.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master $ git remote -v origin git@bitbucket.org:myaccount/p2.git (fetch) origin git@bitbucket.org:myaccount/p2.git (push) origin git@bitbucket.org:myaccount/p2.git (push)
好的,
git clone
工作正常,但現在它為遙控器引用了兩條額外的線,其中一條是重複的。在使用 repo 時還記得那些額外的行share-repo
嗎?這是關於那些仍然與我已刪除的舊 p2 儲存庫相關的前兩行。讓我們嘗試推動一些變化:
$ git touch .gitignore $ git add .gitignore $ git commit -m "first commit" $ git push -v origin master Pushing to git@bitbucket.org: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 git@bitbucket.org:myaccount/p2.git * [new branch] master -> master updating local tracking ref 'refs/remotes/origin/master' Pushing to git@bitbucket.org:myaccount/p2.git To git@bitbucket.org:myaccount/p2.git = [up to date] master -> master updating local tracking ref 'refs/remotes/origin/master' Everything up-to-date
所以 git 推送到 repo p2,並嘗試第二次這樣做,因為這兩個 repos 在我的
bitbucket
帳戶上具有相同的名稱和相同的位置,所以它顯然發現一切都是最新的。現在我可以複製我想要的任何儲存庫,前提是我的帳戶
p2
中存在該儲存庫。Bitbucket
如果我想進行push
一些更改,比如說share-repo
,它會起作用,但 git 也會嘗試將相同的更改推送到儲存庫p2
。我把自己弄得一團糟,我不知道如何解決它。總而言之,我今天早上有一個名為的儲存庫
p2
,我從中bitbucket
刪除了它,然後我從我的電腦中刪除了它的文件夾。從那時起,無論我cd
進入哪個 git 項目,git remote -v
它都會向我展示它已經儲存了 - 在某處 - 與後期 repo 相關的資訊p2
,位於我正在處理的目前 repo 之上。Git 更新命令 - 複製、推送、拉取 - 除非我p2
在Bitbucket
. 一旦我這樣做了,git 更新命令會將命令應用到我正在處理的目前 repo 以及 repo p2。
p2
不是我今天刪除的唯一儲存庫,所以我很想知道這裡發生了什麼。我很樂意接受我能得到的所有幫助。
解決了。我無語。我使用 bash 自動完成(選項卡)對文件進行了快速檢查
~/.git-whatever
,但它不起作用,所以我盲目地認為問題出在其他地方。帕特里克的評論揭示了:我仔細檢查了使用ls -a ~/
,~/.gitconfig
他寫的真的在這裡,它包含有關遙控器的資訊:$ cat ~/.gitconfig [user] name = myaccount email = me@domain.com [remote "origin"] push = git@bitbucket.org:myaccount/p2.git
現在我記住了造成這種情況的原因:在試驗時,我使用了該命令
git config --global remote.origin it@bitbucket.org:myaccount/p2.git
並更改了其他全域配置。我只是不明白做了什麼,--global
因為我發現repo/.git/config
文件中沒有任何更改。關於 git 配置的附加文件:https ://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration