所以我在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)。
4条答案
按热度按时间eqfvzcg81#
在Target Ref Name中,可能需要添加refs/heads:
在您的具体案例中:
(at至少,这是Bitbucket的方式- egit,Eclipse的Eclipse插件)
zqdjd7g92#
我发现EGit期望像 V0这样的值有点愚蠢。0.1 创建Tag时(将标签放置到/refs/tags/V0.0.1位置),并期望提供类似 /refs/tags/V0的refname。0.1 当您将Tag推送到远程存储库时
dluptydi3#
值得一提的是,我们刚刚遇到了这个问题--我们正在使用VS 2013,创建一个带有/refs/heads/的分支时出错了。我们最终从Atlassian下载了Source Tree(我们使用Stash来存放代码)。这显示“未提交的更改”,即DesignTimeResolveAssemblyReferencesInput。缓存文件被更改-VS 2013正在做的事情。我们撤销了这个更改并创建了一个新的分支,这样就解决了问题。
如果上述方法不起作用,希望这将为某人指明正确的方向。
gz5pxeao4#
这个错误(
error: refusing to create funny ref
)应该是当你 * 创建 * 一个带有“滑稽”引用的分支时。但是Git 2.41(Q2 2023)现在允许 * 删除 * 这样的ref:“
git push
“(man)已经被教导允许删除具有一级名称的引用,以帮助修复错误获取此类引用的存储库。通常,我们不鼓励使用这样的ref,并且像以前一样拒绝创建或更新这样的ref。
现在Eclipse使用JGit,一个实现Git版本控制系统的纯Java库。但是如果你创建了这样一个分支,你可以使用Git本身,从命令行,删除它。
参见commit 7c3c550,commit 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来删除单级引用。