Git:说起源已经存在于“新”(i​​nit)存储库中,使用shell但安装了Github for Windows

Posted

技术标签:

【中文标题】Git:说起源已经存在于“新”(i​​nit)存储库中,使用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:说起源已经存在于“新”(i​​nit)存储库中,使用shell但安装了Github for Windows的主要内容,如果未能解决你的问题,请参考以下文章

从 Git 存储库清除文件失败,无法创建新备份

如何从 git 存储库中删除源

Git - 致命:远程来源已经存在

JGit:我可以在不检查的情况下找出某个特定标签是不是存在于 Git 存储库中吗?

当标签已经存在于远程时​​,Git 强制推送标签

在新存储库上推送源主错误