我不小心创建了一个与现有分支同名的分支,但大小写不同:
$ git branch
* master
issue_fix
$ git branch issue_Fix
Run Code Online (Sandbox Code Playgroud)
我尝试使用git branch列出分支,但收到此错误:
fatal: Reference has invalid format: 'refs/heads/issue_fix (Case Conflict)'
Run Code Online (Sandbox Code Playgroud)
我认为 git 在转换为小写后试图创建分支,但这是一个冲突。检查分支引用:
$ ls .git/refs/heads/
master
issue_fix
issue_fix (Case Conflict)
Run Code Online (Sandbox Code Playgroud)
并在参考日志中
$ ls .git/logs/refs/heads/
master
issue_fix
issue_fix (Case Conflict)
Run Code Online (Sandbox Code Playgroud)
我不能删除 git branch -D
$ git branch -D "issue_fix (Case Conflict)"
error: branch 'issue_fix (Case Conflict)' not found.
Run Code Online (Sandbox Code Playgroud)
只是删除".git/logs/refs/heads/issue_fix (Case Conflict)"和安全".git/refs/heads/issue_fix (Case Conflict)"吗?
我在 Dropbox 文件夹中有我的 repo,这通常是个坏主意。(Case Conflict)是 Dropbox 对两个具有相同小写名称的文件的标记。
当我创建一个大写字母的分支时,Dropbox 将其重命名为小写并添加冲突标记。
我通过删除对分支的引用解决了这个问题,但我也应该避免将我的 repo 保存在 Dropbox 文件夹中。它可以做比这更糟糕的事情。
删除 withgit branch -D不起作用,因为文件名格式错误。
我手动删除了文件:
$ rm ".git/logs/refs/heads/issue_fix (Case Conflict)"
$ rm ".git/refs/heads/issue_fix (Case Conflict)"
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否完全安全。