git 合并分支 The name is invalid. Ref names must follow git ref-format rules

在git进行完成功能合并分支是出现:
The name is invalid. Ref names must follow git ref-format rules:
https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
Additionally Sourcetree does not support the use of ‘/’ in Git-flow branch names
原因,git上的命名规则在2020-3-20号的时候进行了更新,要确保分支名称的正确
git-check-ref-format-确保参考名称格式正确

git check-ref-format [--normalize]
       [-[no-] allow-onelevel] [--refspec-pattern]
       <refname>
git check-ref-format --branch <分支名称-缩写>

描述

检查给定的refname是否可接受,如果不是,则以非零状态退出。
在Git中使用引用来指定分支和标签。分支头存储在refs/heads层次结构中,而标记存储在refs/tagsref名称空间的层次结构中(通常在$GIT_DIR/refs/heads$GIT_DIR/refs/tags 目录中,或者,$GIT_DIR/packed-refs 如果ref被打包,则作为文件中的条目git gc)。

Git对引用的命名方式施加以下规则:

  1. 它们可以包括/用于层次结构(目录)分组的斜杠,但斜杠分隔的组件不能以点开头.或以序列结尾.lock
  2. 它们必须至少包含一个/。这会强制出现诸如等等的类别heads/,tags/但实际名称不受限制。如果使用该–allow-onelevel选项,则该规则将被放弃。
  3. 它们…在任何地方都不能有两个连续的点。
  4. 它们不能在任何地方具有ASCII控制字符(即,其值小于\ 040\ 177的字节DEL),空格,代字号~,插入符^或冒号:。
  5. 它们在任何地方都不能有问号?,星号*或方括号[。请参阅以下–refspec-pattern选项,以了解此规则的例外情况。
  6. 它们不能以斜杠开头或结尾,也不能/包含多个连续的斜杠(有关–normalize此规则的例外,请参阅下面的选项)
  7. 它们不能以点结尾.。
  8. 它们不能包含序列@{
  9. 它们不能是单个字符@
  10. 它们不能包含\

这些规则使基于Shell脚本的工具可以轻松解析引用名称,在引用名称不加引号的情况下(错误地)由Shell扩展路径名,还可以避免某些引用名称表达式中的歧义(请参见gitrevisions(7)):
…通常在中使用 双点ref1..ref2,并且在某些情况下,该符号表示^ref1 ref2(即,不在 ref1和中ref2)。
使用代字号~和插入号^来引入后缀 第n个父代和皮洋葱操作。
在提取和推送操作:srcref:dstref, 冒号用于表示“使用srcref的值并将其存储在dstref中”。它还可以用于选择特定对象,例如

 git cat-file:“ git cat-file blob v1.3.3:refs.c”。
at-open-brace @{用作访问引用日志条目的表示法。

使用该–branch选项,该命令将使用一个名称,并检查它是否可以用作有效的分支名称(例如,在创建新分支时)。但是,在使用以前的可能指向分离的HEAD状态的签出语法时,请务必谨慎。规则的git check-ref-format --branch $name实现可能比git check-ref-format refs/heads/$name 说的更严格(例如,破折号可能出现在ref组件的开头,但明确禁止在分支名称的开头)。–branch在存储库中使用option 运行时,首先将输入扩展为“先前的签出语法”@{-n}。例如,@{-1}是一种使用“ git switch”“ git checkout”操作引用最后签出的内容的方法。瓷器应使用此选项在需要分支名称的任何地方接受此语法,因此它们可以像您键入分支名称一样起作用。作为例外,请注意,如果第N位不是签出分支,则“先前的签出操作”可能会导致提交对象名称。

选件

-[no-] allow-onelevel
控制是否接受一级引用名(即,不包含多个分隔的/组件的引用名)。默认值为–no-allow-onelevel。
–refspec模式
将解释为refspec的引用名称模式(与远程存储库一起使用)。如果这个选项被激活,允许含有单个* 中操作的Refspec(例如,foo/bar*/baz或foo/barbaz/ 而不是foo/bar/baz*)。
-规范化
通过删除任何前导斜杠()字符并将名称组件之间的相邻斜杠折叠成单个斜杠来对refname进行 标准化/。如果标准化的refname有效,则将其打印到标准输出并以0状态退出,否则以非零状态退出。(–print不推荐使用的拼写方式–normalize。)

例子

打印签出的上一件事的名称:
$ git check-ref-format --branch @{-1}
确定要用于新分支的引用名称:
$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")|| { echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值