git 创建新的远程分支时出现有趣的refname错误

icomxhvb  于 2023-04-28  发布在  Git
关注(0)|答案(4)|浏览(193)

所以我在Github上做了一个项目,一切都很好。现在我想创建一个新分支。
我是这么做的
1.创建新的本地分支
1.把新的分支推到了github上
问题是在推送到我的遥控器时,我得到了这个错误:

Repository ssh://git@github.com/<username>/ProjectColossus.git

funny refname
error: refusing to create funny ref 'workingBranch' remotely

我的远程存储库被称为origin,所以我试着按照stackoverflow的另一个答案中的建议使用这个refname,但是我得到了同样的错误。我也试过在远程推送之前在“目标参考名称:”字段中使用与我的新本地分支相同的名称,但我真的不确定我在这一点上做了什么。我知道我对git remote push有些不了解,所以稍微解释一下会非常有用。我对git和版本控制还很陌生,但我是一个中级程序员(1月份开始第二年CS)。

eqfvzcg8

eqfvzcg81#

在Target Ref Name中,可能需要添加refs/heads:

refs/heads/name_of_your_new_branch

在您的具体案例中:

refs/heads/workingBranch

(at至少,这是Bitbucket的方式- egit,Eclipse的Eclipse插件)

zqdjd7g9

zqdjd7g92#

我发现EGit期望像 V0这样的值有点愚蠢。0.1 创建Tag时(将标签放置到/refs/tags/V0.0.1位置),并期望提供类似 /refs/tags/V0的refname。0.1 当您将Tag推送到远程存储库时

dluptydi

dluptydi3#

值得一提的是,我们刚刚遇到了这个问题--我们正在使用VS 2013,创建一个带有/refs/heads/的分支时出错了。我们最终从Atlassian下载了Source Tree(我们使用Stash来存放代码)。这显示“未提交的更改”,即DesignTimeResolveAssemblyReferencesInput。缓存文件被更改-VS 2013正在做的事情。我们撤销了这个更改并创建了一个新的分支,这样就解决了问题。
如果上述方法不起作用,希望这将为某人指明正确的方向。

gz5pxeao

gz5pxeao4#

这个错误(error: refusing to create funny ref)应该是当你 * 创建 * 一个带有“滑稽”引用的分支时。
但是Git 2.41(Q2 2023)现在允许 * 删除 * 这样的ref:“git push“(man)已经被教导允许删除具有一级名称的引用,以帮助修复错误获取此类引用的存储库。
通常,我们不鼓励使用这样的ref,并且像以前一样拒绝创建或更新这样的ref。
现在Eclipse使用JGit,一个实现Git版本控制系统的纯Java库。但是如果你创建了这样一个分支,你可以使用Git本身,从命令行,删除它。
参见commit 7c3c550commit d81ba50(2023年3月1日)by ZheNing Hu ( adlternative )
(由Junio C Hamano -- gitster --合并到commit 4a25b91,2023年3月19日)

push:允许删除单级参照

签字人:胡哲宁
我们不鼓励创建/更新单级引用,因为一些上层应用程序只在指定的引用命名空间中工作,例如“refs/heads/*”或“refs/tags/*”,这些单级引用名可能无法识别。
不过,我们仍然希望用户可以删 debugging 误创建的文件。
因此,当在服务器上用“git receive-pack”(man)更新分支时,通过检查是否是分支删除操作,将决定是否允许更新单级引用。

避免创建/更新此类单级参照,但允许删除

在客户端,“git push”(man)也没有正确填写单级引用的旧oid,导致服务器端“git receive-pack”在删除单级引用的时候,认为引用旧oid发生了变化,导致推流被拒绝。
因此,解决方案是修复客户端,使其能够通过正确填充old-oid来删除单级引用。

相关问题