提问人:glades 提问时间:7/11/2019 最后编辑:Communityglades 更新时间:9/14/2020 访问量:5086
致命:./config 中“receive.denycurrentbranch”的配置值错误
fatal: bad config value for 'receive.denycurrentbranch' in ./config
问:
我使用 git 将提交的更改推送到服务器上的存储库。现在有这个错误:
$ git push -u origin master
fatal: bad config value for 'receive.denycurrentbranch' in ./config
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
现在我想这个错误可能是由于SSH连接中的一些故障造成的。我使用 PuTTY 通过 SSH 连接到我的 Web 服务器。但是,我仍然是一个菜鸟,我不知道这到底是怎么回事。
所以我尝试的是,我在线生成了私钥,下载了它,将其转换为PPK格式,并将其放在PuTTY的身份验证选项卡中。当我通过 PuTTY 登录时,我必须输入密钥密码,然后它才能连接而不会出错。
该错误仅在 git bash 中出现。那么我该如何解决呢?是否需要以某种方式告诉 Git 使用 PuTTY 作为我的 SSH 代理(无论如何什么是 SSH 代理?还是 Git 默认使用 Windows 10 中的 OpenSSH?
我也尝试过使用
$ eval $(ssh-agent -s)
$ ssh-add ~/.ssh/id_rsa
但我并不完全知道它有什么作用。它只是启动 OpenSSH-Agent 吗?
如果有人能为我澄清一些事情,我会非常高兴。我已经在谷歌上搜索了大约一天,虽然碎片慢慢组合在一起,但我无法解决那个特定问题。谢谢!:)
更新 19.7.19
问题仍未完全解决。是的,设置为服务器端或在服务器端设置会使错误消失。我可以推送,但是没有显示任何文件。显然,只有提交保存在存储库中,而不是文件本身。正如我所想的,我需要允许非裸存储库(包含实际文件而不仅仅是提交的存储库)存在的选项,以便服务器可以从存储库中获取这些文件并将它们部署在我的public_html文件夹中。receive.denycurrentbranch
ignore
refuse
updateInstead
我的服务器 git 版本是 2.19.1,它似乎高于解释 -Parameter 所需的 2.4.0 版本。所以为什么会出现这个错误对我来说仍然是一个谜。updateInstead
我现在正试图在我的服务器上安装一个新的 git 版本,看看这是否改变了什么。但是,我在那里遇到了不同的问题。请访问此线程。
答:
您看到的问题是您为该选项设置了无效的配置值。从控制台窗口中看,您有一个不理解该值的 Git 版本(或者您在值中键入了不间断空格之类的内容)。receive.denycurrentbranch
refuse
您应该知道此值仅适用于服务器端。在客户端设置它没有任何影响。您应该通过编辑(或 ,视情况而定)文件并删除适当的选项来将其从配置中删除,这应该会使推送再次工作。config
.git/config
评论
ignore, refuse, updateInstead
refuse
updateInstead
receive.denycurrentbranch
ignore
updateInstead
receive.denycurrentbranch
ignore
refuse
updateInstead
updateInstead
receive.denycurrentbranch 忽略不会解决问题,以后会造成更多问题,我建议您按照以下步骤操作
这肯定会解决您的问题,因为我浪费了 5 个小时来寻找同样的问题 -
首先使用命令 git 使用 ssh 检查远程的 GIT 版本 --version 就我而言,它是 2.19.1,这是此问题的根本原因。
我建议在盯着下面之前在cPanel上创建一个新的存储库 过程,一旦创建新的存储库,请检查以下内容。
现在确保在远程配置上 denyCurrentBranch = update代替 下面是我的远程配置截图,可以查看远程配置 在远程存储库中使用命令 git config --edit 目录 My Live git config 截图
现在在本地克隆 cpanel 存储库,并检查本地 git 配置文件,并确保它具有标签 [remote “origin”],如果 在本地 git 远程添加上使用此命令找不到它 原产地 ssh://username@website/home/username/reponame
现在只需添加任何测试文件并提交更改并使用 下面的命令,你的远程存储库将得到 100% git 的更新 推送源主 -u --exec=/usr/local/cpanel/3rdparty/bin/git-receive-pack
问候!
评论
我知道这是一个老问题,但我已经解决了它,并想为其他人发布解决方案。
问题似乎是您的托管服务提供商上有 2 个 git 安装。一个安装在默认使用中。这个可能或更早于 .另一个安装在 app 目录中,并链接在您的路径中。因为 git 不运行完整的 shell,所以使用默认的“旧”版本,而不是您在会话中运行时从中返回的版本。要解决此问题,请先查看会话下的路径:\usr\bin
1.8.*
2.4
cpanel
git version
ssh
git-receive-pack
ssh
which git-receive-pack
比在本地计算机上更新远程配置:
git config remote.<remote-name>.receivepack <receive-pack-path>
这应该可以解决您的问题。
我一直在Bluehost托管上设置git存储库。那里的 git 版本是 2.19.1。我已经通过cPanel创建了存储库。我用'receive.denycurrentbranch'发现了同样的问题。
我已经设法通过编辑 git 配置文件来解决这个问题。它们现在看起来像
全局配置 (git config --global --edit)
[receive]
# denyCurrentBranch = updateInstead
# denyNonFastForwards = true
本地存储库配置 (git config --edit)
[core]
repositoryformatversion = 0
filemode = true
bare = true
logallrefupdates = true
symlinks = false
[receive]
# denyCurrentBranch = updateInstead
[gc]
auto = 0
对于使用 Cpannel 并收到此错误的任何人,您可能需要尝试以下操作:
git push origin master -u --exec=/usr/local/cpanel/3rdparty/bin/git-receive-pack
摘自 Cpannel 的 Git 页面:
评论
push
我也遇到了同样的问题。当我运行命令时,它会显示,但它没有接受上述问题中提到的。git --version
2.24.1
updateInstead
我这样做是为了解决这个问题:
- 运行此命令。
which git
它将为您提供 git 的路径。
示例输出
/usr/local/cpanel/3rdparty/lib/path-bin/git
- 转到文件并将此代码添加到文件底部
~/.bashrc
export PATH=/usr/local/cpanel/3rdparty/lib/path-bin:$PATH
*请注意,我没有在路径的末尾包含。git
希望这能解决问题。
评论
receive.denycurrentbranch