无法签出以连字符开头的git分支( - )

cha*_*118 11 git

我克隆了一个git存储库.
这个存储库有一个类似的远程分支-feature-abc.
当我输入时git checkout -feature-abc,我得到:

error: unknown switch `e'
Run Code Online (Sandbox Code Playgroud)

知道如何结账这个分支吗?

Von*_*onC 10

尝试使用以下语法:

git checkout -- -feature-abc
Run Code Online (Sandbox Code Playgroud)

双连字符语法应该帮助git将命令选项与实际的分支名称参数分开,正如我之前在" 删除名称很差的git分支 "中所解释的那样.


如果这不起作用,您可以按照" 如何重命名本地Git分支? "中建议的配方.

进入工作副本的.git/refs/heads,找到文件名"-dumb-name",获取分支的哈希值.然后这将检查出来,创建一个具有合理名称的新分支,并删除旧分支.

  • 进入你的工作副本.git/refs/heads,
  • 找到名为" -feature-abc" 的文件,
  • 获取分支的哈希值(cat文件).
  • 然后检查出来,创建一个具有合理名称的新分支,并删除旧分支.
git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name
Run Code Online (Sandbox Code Playgroud)


cha*_*118 8

最后,我能够根据VonC的答案让事情变得有效.

解决方案1:

git checkout -b feature-abc origin/-feature-abc

解决方案2:

  • 进入你的工作副本.git/refs/remotes/origin,
  • 找到名为" -feature-abc" 的文件,
  • 获取分支的哈希值(cat文件),
  • 然后检查一下,用一个合理的名字建立一个新的分支,
  • 创建新的分支跟踪远程分支.
git checkout {hash}
git checkout -b feature-abc
git branch --set-upstream-to=origin/-feature-abc feature-abc
Run Code Online (Sandbox Code Playgroud)

让现有的Git分支跟踪一个远程分支?

  • 你没有提到这个分支是一个遥远的分支.我的解决方案可以使用`origin/-feature-abc`而不是`-feature-abc`.但是仍然是+1. (2认同)