Git:说起源已经存在于“新”(init)存储库中,使用shell但安装了Github for Windows
Posted
技术标签:
【中文标题】Git:说起源已经存在于“新”(init)存储库中,使用shell但安装了Github for Windows【英文标题】:Git: says origin already exists on "NEW" (init) repository, using shell but installed Github for Windows 【发布时间】:2013-06-05 10:04:44 【问题描述】:我为 Windows 安装了 Git,虽然我使用的是 shell 而不是 Windows 界面。
如果我做一个git init
,然后尝试做一个
git remote add origin git@github.com:someuser/testme.git
我收到以下错误
fatal: remote origin already exists.
所以我做了一个
git remote -v
它返回以下内容
origin
upstream
所以它似乎在那里,但没有设置 URL,我不明白为什么它在那里?
如果我做一个
git remote rm origin
它会产生这个
error: Could not remove config section 'remote.origin'
它说它不能删除 remote.origin 配置部分;我检查了我的主目录下的 .gitconfig 并没有看到任何东西。
无论如何我都可以通过使用来解决这个问题
git remote set-url origin git@github.com:someuser/testme.git
但我很困惑,因为我以前使用过 Git,但这从未发生过。
这可能与适用于 Windows 的 Git 有关吗?
【问题讨论】:
你很可能在一个已经是 git 存储库的文件夹中。git init
会告诉你它是否重新初始化了 repo,在这种情况下没有任何改变。在这种情况下,repo 中自然可能存在已存在的遥控器
我不是一个完全干净的目录....我什至移动到另一个与此无关的目录并创建了一个新的 init 并再次相同
那么你的整个环境有一些问题(这可能是一些不同的事情,所以如果没有访问权限就很难判断)。尝试重新启动并查看行为是否仍然存在。这可能是由于设置了一些 shell 环境变量造成的。
不,我试过重启,还是同样的问题。
确保没有您不知道的隐藏文件。 Git 将配置设置存储在 .git 中,如果您位于作为 git 存储库的文件夹的子文件夹中,则可能会导致您的问题。
【参考方案1】:
我是把它放进去的开发者。这就是为什么我把它添加到系统 gitconfig 中的原因,它非常有用!
## Because of this change, git fetch knows about PRs
git fetch
## Now, I can merge PRs by number
git merge origin/pr/24
## See changes from PR #53
git diff master...origin/pr/53
## Get the commit log from PR #25
git log origin/pr/25
不幸的是,这确实会导致源远程始终存在,即使它不存在。
解决方法
每当你看到git remote add origin https://...
时,改为:
git remote set-url origin https://...
【讨论】:
公关意识!?棒极了。谢谢! :) @Paul 这是否意味着此新功能不再需要 GitHub 帮助中 Checking out Pull Requests locally 中概述的手动设置? (我尝试了git checkout pr/999
,没有对我的.git/config
做任何事情,它成功了。)
在阅读了Chad's answer 和它的cmets 之后,我去检查了我的~\AppData\Local\GitHub\PortableGit_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\etc\gitconfig
,果然,fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
就在那里。所以,回答我自己的问题:是的,较新版本的 GHfW 带有在系统级别内置的 git checkout pr/999
功能,因此不再需要进行任何手动配置来在本地签出拉取请求。
我只是喜欢第一行 :)【参考方案2】:
我也遇到过同样的问题,我想我终于弄明白了。 GitHub for windows 在/Users/<username>/AppData/GitHub
中安装了一个版本的 PortableGit。在 PortableGit 目录中的/etc
下,有一个gitconfig
文件。这是系统配置。它定义了 "origin"
和 "upstream"
,大概是对 GitHub 有意义的默认值。
我不能肯定地说,但我在 GitHub for Windows 客户端的最新几次更新中开始注意到这个问题。遗憾的是,发行说明没有指出任何证据,而且 Windows 客户端不是开源的,所以很难说。
我已经向他们的支持地址发送了一条消息,所以如果我收到任何回复,我会在这里更新。
编辑:GitHub 支持回复说这是一个已知问题,很快就会修复。
【讨论】:
他们解决了吗?我看到 Windows 客户端仍然是 1.0 版,但我已经有了.... 我的路径是C:\Users\[UserName]\AppData\Local\GitHub\PortableGit_[long string here]\etc
截至 8 月 20 日,我还没有看到此修复已进入 Windows Github 客户端。您或许可以听取 Yaniv 的建议,只需删除全局 gitignore
中的 origin
部分即可。
这是我需要的线索。使用从 GitHub for Windows 打开的 powershell 窗口时,我遇到了与 OP 相同的问题。相反,我打开了另一个正常的命令提示符窗口,一切正常。问题在于 GitHub 集成。 (顺便说一句 - 我正在推送到 BitBucket)【参考方案3】:
我只是删除了%appdata%/Local/GitHub/PortableGit_.../etc/gitconfig
中的origin
部分,一切都恢复正常 - 当我向它们添加远程origin
时,新的repos
会相应地执行,因为它们在创建时没有。
这次删除可能会有副作用,但到目前为止我还没有遇到任何问题。
【讨论】:
如果你这样做,github.com 上的许多“在桌面打开”按钮都会做奇怪的事情 我只使用命令行,所以我想这就是为什么我从来没有遇到过这个问题。我想我的解决方案可以归类为临时解决方法,直到 github 会处理这个问题。 这为我解决了问题,到目前为止,我还没有遇到 github 及其克隆到桌面按钮的任何问题以上是关于Git:说起源已经存在于“新”(init)存储库中,使用shell但安装了Github for Windows的主要内容,如果未能解决你的问题,请参考以下文章