Android Studio - 推送失败:致命:无法从远程存储库读取
Posted
技术标签:
【中文标题】Android Studio - 推送失败:致命:无法从远程存储库读取【英文标题】:Android Studio - Push failed: fatal: Could not read from remote repository 【发布时间】:2014-09-01 13:06:18 【问题描述】:我在 android Studio 有一个 git 项目,在 BitBucket 有一个遥控器,我将其更改为使用 SSH 而不是 HTTPS。我可以使用 Atlassian 的 SourceTree 完成所有工作,但在 Android Studio 中,每次我尝试推送它说的项目时
推送失败:致命:无法从远程存储库读取。
有人知道会发生什么吗?
【问题讨论】:
您可能需要再次添加遥控器。当 Git 不知道推送到哪里时,就会出现该错误消息。查看这个类似的问题:***.com/questions/15409841/… 我认为最佳答案应该对您有所帮助。 但是我的配置文件里面有remote url,SourceTree可以推送... 嗯.. 并且远程有正确的 SSH url,而不是旧的 HTTPS url? 我尝试搜索这个问题,但使用“IntelliJ”而不是“Android Studio”来获得更多结果,我发现:askubuntu.com/questions/436610/… 它建议使用本机 SSH 可执行文件而不是内置以便 IntelliJ(或 Android Studio)使用正确的 SSH 密钥。这个答案意味着您对 Android Studio 不要求您提供密钥的担忧是有道理的。 我希望我能在这里给人们标记一个谷歌...... 【参考方案1】:重新生成您的公共 ssh 密钥并将其添加到您的 git hub 存储库。
ssh-keygen -t rsa
它在我的情况下有效。
【讨论】:
我不知道为什么所有的缺点,但这实际上解决了我的问题【参考方案2】:我遇到了同样的问题。事实证明,如何运行 Android Studio 很重要。如果您从终端或某处以正常权限运行它,它就无法读取它为了推送存储库而必须读取的本地文件。
解决方案可能只是以比当前更多的权限重新启动 Android Studio。
【讨论】:
你是在 Windows 上运行它吗?【参考方案3】:在 Android Studio 或 IntelliJ 中有两种 Git SSH 验证方式,通过以下方式更改: 设置 - 版本控制 - Git - SSH 可执行文件 - “内置”或“本机”
-
Built-in :表示使用 Git 内置的 ssh 密钥对进行身份验证。
您可以通过
ssh-keygen -t rsa
生成它
默认保存路径为 "~/.ssh/id_rsa" 和 "~/.ssh/id_rsa.pub"。
您应该在您的 BitBucket 帐户中添加公钥。
路径如下:管理帐户 - SSH 密钥 - 添加密钥
Native :表示使用本地存储库托管服务生成的 ssh 对,例如 BitBucket 或 GitHub,通常在服务帐户中自动添加。例如在 GitHub 中。它生成了一对 SSH 密钥,“~/.ssh/github_rsa.pub”和“~/.ssh/github_rsa”,并且公钥已经通过 GitHub GUI 自动添加到我的帐户中。因此,将 SSH 可执行文件更改为“Native”可能是一种简单的方法。
无论如何,在存储库托管服务的帐户中添加正确的公钥后,您可以同时使用这两种方式。
【讨论】:
如果您选择内置:您可以参考@kid 的答案。重新生成您的公共 ssh 密钥并将其添加到您的 git hub 存储库。ssh-keygen -t rsa
并且公共 ssh 密钥在 ~/.ssh/id_rsa.pub 中生成并粘贴给您git Hub 帐户。路径是 帐户 - 设置 - SSH 密钥【参考方案4】:
我自己遇到了这个问题,发现现有的答案有点不完整。
tl;dr:将 Android Studio/IntelliJ 的 SSH 客户端从内置切换到原生可能会为您解决问题(对我来说确实如此)。
Android Studio(实际上是一个专门的 IntelliJ IDEA)带有自己的内置 SSH 客户端,但如果您愿意,可以切换到本机(取决于平台/操作系统)。您可以通过打开 Android Studio 选项来更改此设置,搜索“git”,然后在 SSH 可执行文件下拉菜单中选择“本机”。
就我而言,我无法通过 Android Studio 推送到 BitBucket,但 git push
工作得很好。切换到本机(在我的例子中是 OSX SSH)解决了这个问题 - 现在我可以从 Android Studio 推送到 BitBucket。
其他答案涉及该主题,但 SSH 可执行文件和它们使用的密钥之间似乎存在一些混淆。
根据 SSH Executable 下的 Android Studio 帮助:
内置:选择此选项以使用 IntelliJ IDEA 提供的实现。 Native:选择此选项以使用本机实现。【讨论】:
【参考方案5】:这可能是 Intellij 问题。您的密钥由 ssh 本地管理,Intellij 有自己的 ssh 程序。
进入设置,搜索 git->ssh 可执行文件然后选择native
如此处所示:git with IntelliJ IDEA: Could not read from remote repository
【讨论】:
谢谢你,这在 OSx 上工作。通常,如果您在干净的机器上使用默认设置,例如首次安装 Intellij,但在我的情况下,该机器具有多用户登录,这可能会影响默认设置。 这在我的情况下不起作用(对于 Android Studio 3.1)。请在下面查看我的答案。【参考方案6】:我遇到了这个问题,终于解决了。并且有两个重要的设置点: 在android studio中:File-Settings-GitHub:不要选择“Clone git repositories using ssh” 在android studio中:File-Settings-Git:为“SSH executable”选择“Built-in”
而我在GitHub的账号里已经有的SSH,是我在android studio的那个,我忘了怎么在android studio中找到SSH,但是你可以通过其他方式找到它
【讨论】:
【参考方案7】:转到设置 > 版本控制 > Git。确保 SSH 可执行文件设置为“本机”。
如果已设置,请切换回“内置”,应用它,然后再次切换回“原生”。
【讨论】:
这在我的情况下不起作用(对于 Android Studio 3.1)。请看下面我的回答。 对于那些不起作用,也许您想在终端中检查您当前的 git 可执行文件:$: which git
指向可执行文件并在 android 上替换它在我的情况下,这适用于 AS 3.2.1 @AlexanderPoleschuk
@mochadwi 谢谢。升级到 Android Studio 3.2 后,我的问题得到了解决。【参考方案8】:
转到 github.com 并打开您的存储库并复制 USE HTTPS url 转到您的 Android 项目目录。在 .git 文件夹中搜索配置文件。
在您从 github.com(使用 https)复制的配置文件更改 url 和以前的 url。 保存配置文件并再次推送。 这对我有用。
【讨论】:
【参考方案9】:我在 Android Studio 3.1 中遇到了类似的问题
我按照此处的建议将 Preferences > Version Control > Git > SSH executable 从 Built-in 更改为 Native ,但没有帮助.
然后我将 Android Studio 升级到 3.2 并切换回 Built-in。它解决了我的问题。
【讨论】:
很高兴它为您工作。最终切换成功了,这就是建议:) 也许吧,但我不确定 :-) 我曾几次切换到 Native,然后又切换回 Built-in。直到我升级到 Android Studio 3.2,它才起作用。还是谢谢。【参考方案10】:尽管我的 SSH 可执行文件设置为 Native
,但我收到了该错误,因为我为 SSH 密钥文件设置了密码。
我还没有找到如何在Android studio中指定密码的方法,但是还有另一个解决方案,您可以删除密码,可以使用$ ssh-keygen -p
完成。然后只需确认文件位置,输入旧密码并将新密码留空。
取自How do I remove the passphrase for the SSH key without having to create a new key?
【讨论】:
遵循这个,但我没有重置密码,而是再次将其设置为相同的密码。这样做的行为导致 Android Studio 在我下一次推送时在弹出窗口中提示我输入 SSH 密码……然后一切都恢复了。【参考方案11】:如果将 Preferences > Version Control > Git > SSH 可执行文件从 Built-in 更改为 Native 不起作用,请尝试取消选中 Preferences > Version Control > GitHub>使用 ssh 克隆 git 存储库 CHECK IT
【讨论】:
【参考方案12】:在切换到 Android Studio 3.6 后遇到问题,但在后台遇到了 IDEA 2019
在我的例子中,下面的解决方案是开箱即用的:
-
帮助 - 查找操作 - 注册表...
找到
git.use.builtin.ssh
并启用它
【讨论】:
【参考方案13】:为我解决这个问题的方法是进入设置 > 版本控制 > Git 并选中“使用凭据助手”。我最近下载了 Android Studio 的金丝雀版本并选择不迁移我的设置,因此在我的发布版本上检查的这个小设置不再在金丝雀版本上检查。
【讨论】:
以上是关于Android Studio - 推送失败:致命:无法从远程存储库读取的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 启动失败:初始化“com.intellij.util.net.ssl.certificatemanager”时出现致命错误
1Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoc
从 Visual Studio Code (1.62.2) 推送到 GitHub 时出现“致命:身份验证失败”