无法删除 Git 存储库中的远程源
Unable to delete origin remote in Git Repository
我以某种方式弄乱了我的本地托管存储库,但不确定如何处理。如果我创建该项目的新克隆并查看我的遥控器,我会得到以下信息。请注意,GitHandle
是一个正在运行的 SSH 别名。
为清楚起见,我将 GitHandle:/opt/git/www.project2.com.git
的存储库称为 "correct" 存储库,将 GitHandle:/opt/git/www.project1.local.git
的存储库称为 "incorrect" 存储库。
bash-4.4$ git clone GitHandle:/opt/git/www.project2.com.git htdocs
bash-4.4$ ...
bash-4.4$ cd ./htdocs
bash-4.4$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
origin GitHandle:/opt/git/www.project2.com.git (push)
bash-4.4$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
bash-4.4$
不知何故,除了 "correct" 项目之外,我还将 "incorrect" 项目 (www.project1.local) 设置为远程,但两者都配置为 origin
.由于某种原因,"correct" 项目也没有相应的 fetch
。
如果我检查 ./.git/config
,则源配置似乎正确。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
url = GitHandle:/opt/git/www.project2.com.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
然后我想我可以删除原点并用正确的原点重新添加它。该命令似乎是成功的。它从 ./.git/config
中删除了条目并删除了 "correct" 遥控器。但是"incorrect"那个还在附近。
bash-4.4$ git remote rm origin
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
bash-4.4$
如果我检查 ./.git/config
,根本没有 origin
的踪迹。
bash-4.4$ nano ./.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[branch "master"]
我决定再次尝试删除 origin,看看它是否再次成功。这一次,它出错了。
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
bash-4.4$ git remote rm origin
error: Could not remove config section 'remote.origin'
bash-4.4$
如果我然后尝试添加 "correct" 原点,它仍然保留 "incorrect" 原点并且只为 "correct" 遥控器添加一个 push
。
bash-4.4$ git remote set-url origin GitHandle:/opt/git/www.project2.com.git
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
origin GitHandle:/opt/git/www.project2.com.git (push)
bash-4.4$
如果我检查我的 ./.git/config
文件,它显示原点设置正确:
bash-4.4$ nano ./.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[branch "master"]
[remote "origin"]
url = GitHandle:/opt/git/www.project2.com.git
我很难弄清楚接下来要做什么来解决这个问题。恐怕有人会将他们的更改推送到错误的项目(希望没有人 "forces" 它)。任何人都可以建议一些我可以探索的途径来尝试解决这个问题。有什么想法可以让 "incorrect" 远程吗?
如果那里需要任何东西,我可以完全访问远程存储库。如果我应该提供任何可能有帮助的额外信息,请告诉我。
听起来您可能在全局 ~/.gitconfig
文件中配置了 remote
。在那里看一看,如果找到就把它移除。
我以某种方式弄乱了我的本地托管存储库,但不确定如何处理。如果我创建该项目的新克隆并查看我的遥控器,我会得到以下信息。请注意,GitHandle
是一个正在运行的 SSH 别名。
为清楚起见,我将 GitHandle:/opt/git/www.project2.com.git
的存储库称为 "correct" 存储库,将 GitHandle:/opt/git/www.project1.local.git
的存储库称为 "incorrect" 存储库。
bash-4.4$ git clone GitHandle:/opt/git/www.project2.com.git htdocs
bash-4.4$ ...
bash-4.4$ cd ./htdocs
bash-4.4$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
origin GitHandle:/opt/git/www.project2.com.git (push)
bash-4.4$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
bash-4.4$
不知何故,除了 "correct" 项目之外,我还将 "incorrect" 项目 (www.project1.local) 设置为远程,但两者都配置为 origin
.由于某种原因,"correct" 项目也没有相应的 fetch
。
如果我检查 ./.git/config
,则源配置似乎正确。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
url = GitHandle:/opt/git/www.project2.com.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
然后我想我可以删除原点并用正确的原点重新添加它。该命令似乎是成功的。它从 ./.git/config
中删除了条目并删除了 "correct" 遥控器。但是"incorrect"那个还在附近。
bash-4.4$ git remote rm origin
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
bash-4.4$
如果我检查 ./.git/config
,根本没有 origin
的踪迹。
bash-4.4$ nano ./.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[branch "master"]
我决定再次尝试删除 origin,看看它是否再次成功。这一次,它出错了。
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
bash-4.4$ git remote rm origin
error: Could not remove config section 'remote.origin'
bash-4.4$
如果我然后尝试添加 "correct" 原点,它仍然保留 "incorrect" 原点并且只为 "correct" 遥控器添加一个 push
。
bash-4.4$ git remote set-url origin GitHandle:/opt/git/www.project2.com.git
bash-4.4$ git remote -v
origin GitHandle:/opt/git/www.project1.local.git (fetch)
origin GitHandle:/opt/git/www.project1.local.git (push)
origin GitHandle:/opt/git/www.project2.com.git (push)
bash-4.4$
如果我检查我的 ./.git/config
文件,它显示原点设置正确:
bash-4.4$ nano ./.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[branch "master"]
[remote "origin"]
url = GitHandle:/opt/git/www.project2.com.git
我很难弄清楚接下来要做什么来解决这个问题。恐怕有人会将他们的更改推送到错误的项目(希望没有人 "forces" 它)。任何人都可以建议一些我可以探索的途径来尝试解决这个问题。有什么想法可以让 "incorrect" 远程吗?
如果那里需要任何东西,我可以完全访问远程存储库。如果我应该提供任何可能有帮助的额外信息,请告诉我。
听起来您可能在全局 ~/.gitconfig
文件中配置了 remote
。在那里看一看,如果找到就把它移除。