Visual Studio 2019“推送到远程仓库时遇到错误:无法推送到远程仓库...”

46
在 Visual Studio 2019 中,我有如下所示的“未推送的提交”:

enter image description here

当我尝试推送它们时,我会收到错误提示,GUI上看起来像这样: enter image description here 注意:黄色标签上的“Failed to push…”无法点击。
源代码控制-Git的输出如下: enter image description here 输出窗口没有显示任何有用的细节。我是否在错误的位置查看?有没有更好的地方可以查看实际的错误?
在这种情况下的答案是分支“develop”的策略不允许直接推送。我有点希望输出中的错误会声明类似“由于分支上的策略限制而无法推送”。

4
嘿,马特,问题是“更多详细信息的输出窗口”在哪里? - Sniipe
2
有人解决了这个问题吗? - Joseph
几天来一直有同样的问题 - 没有解决方案。 - Doug Kimzey
这是一个非常特殊的情况,但在Github API停机期间,我遇到了这个错误。 - Mr.Technician
我遇到了同样的问题。输出窗口 - 来自源代码控制的输出,根本没有任何有用的信息。 - Marz
显示剩余5条评论
18个回答

18

这个问题可能有以下几个原因:

  1. 尝试先执行 pull,再执行 push
  2. 检查权限(可能您没有推送的权限),您可能只能推送到受保护的分支。

我认为我已经推送到了一个受保护的分支 - 我的问题是在哪里可以找到它?也许VS2019不会告诉我这个。 - Sniipe
请向您的git存储库管理员提问。 - Raphaël Colantonio

10

我也曾遇到相同的错误,经过尝试了许多方法后,我找到了解决方案。

解决方案 - 访问您的GitHub账户 >>个人资料>> 电子邮件>> “保持我的电子邮件地址私有” - >>取消选中此选项。

注意: - 此错误可能由各种原因引起。这是Push操作失败的原因之一。若要确切地知道原因,请检查Visual Studio的输出窗口。


完美!对我也有效 :) - Paul Williams
3
谁能回答 DevOps 仓库的问题? - Doug Kimzey

8

我在使用VS2019时遇到了相同的问题。

我尝试在CMD中运行,得到了比VS2019提供更好的错误信息。

CMD中的错误

我的一个提交中意外地包含了一个zip文件,但在下一个提交中将其删除了。

所以我必须重置这两个提交并从第一个提交中删除zip文件。然后我才能暂存这两个提交并推送它们。


1
这是答案(或者至少是一个解决方法)到实际问题:GUI错误信息中承诺的“详细信息”在哪里? - Bob Sammers

4

我遇到了相同的问题,但原因不同。我正在从本地推送全新的分支,所以我知道分支策略不可能是罪魁祸首。但是它仍然不允许我推送它,因此我需要一些真正的错误消息。尝试使用命令行推送解决了这个问题,不幸的是 Visual Studio 没有显示这些细节。

You do not have permission to create ref 'refs/heads/XYZ...'. Please ensure the ref naming convention being used is allowed in this repository.

实际上,我错过了最新仓库政策变更所强制执行的feature/前缀... 因此,在出现问题时需要检查另一个问题。


4

我遇到了同样的问题。 请查看分支策略。可能需要批准或拉取请求。


是的,那就是导致我的推送失败的原因! - theITvideos
在Azure DevOps中,我的“自动包含审核人员”选项被打开了,因此我无法直接推送到分支。我将其关闭后,立即就可以正常工作了! - AlbatrossCafe

3
如果输出中没有任何内容显示,请检查“显示输出来源”设置。

1
由于您当前的回答不够清晰,请[编辑]并添加额外细节以帮助其他人理解它是如何回答问题的。您可以在帮助中心找到有关编写良好答案的更多信息。 - Community
谢谢,这对我有用。 如果不清楚,在Visual Studio的输出窗口中有一个下拉菜单,其中一个选项是从源代码控制(git)查看。错误将在那里显示。 - undefined

2
对于我来说,我是在本地从主分支克隆下来的功能分支上工作的,它看起来像这样:feature/MyBranchName。我试图将这些更改推送到远程仓库,但似乎最近的政策变化禁止向功能分支推送,这一直导致出现以下错误:

在推送到远程仓库时遇到错误:无法将更改推送到远程仓库。请参阅“输出”窗口以获取更多详细信息。

这个命令给了我解决问题的线索:git push origin feature/MyBranchName(记得包含功能)。消息如下:
Total 0 (delta 0), reused 0 (delta 0)
To https://mycompanyname.visualstudio.com/DefaultCollection/TeamProjectName/_git/MyProjectName
 ! [remote rejected] feature/MyBranchName -> feature/MyBranchName (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)
error: failed to push some refs to 'https://mycompanyname.visualstudio.com/DefaultCollection/TeamProjectName/_git/MyProjectName

我的解决方案是将本地功能分支的更改合并到本地开发分支中,将开发分支推送到远程仓库,并使用该开发分支向我想要推送这些更改的任何分支创建PR。


2

我在 ADO → 分支安全 中需要将“推送时绕过策略”的值设置为“允许”。

enter image description here


1

在我的问题中,我创建了一个分支,然后从本地删除了它,但我没有从远程删除它,然后我又创建了一个同名的分支,然后出现了这个问题。因此,您可以从本地和远程删除旧的分支。


1

由于我在公司防火墙后面并使用代理进行http/https,因此我必须设置我的git代理:

  1. 我打开了命令提示符(我的Windows Server 2016 Dev box上已经安装了git)
  2. 在找到Web代理服务器的IP和端口后,输入以下命令:git config --global http.proxy http://<ip地址>:<端口>
  3. 然后输入以下内容:git clone <从Azure DevOps克隆地址>
  4. 一切都很顺利!

P.S. 我从类似的Server Fault答案中窃取了我的答案:https://serverfault.com/questions/663504/can-browse-but-cant-ping


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接