与案例冲突删除Git分支

时间:2016-11-20 04:56:38

标签: git

我意外地创建了一个与现有分支同名的分支,但不同的情况:

$ git branch
* master
  issue_fix
$ git branch issue_Fix

我尝试使用git branch列出分支,但收到此错误:

fatal: Reference has invalid format: 'refs/heads/issue_fix (Case Conflict)'

我认为git在转换为小写后尝试创建分支,但这是一个冲突。检查分支参考:

$ ls .git/refs/heads/
master
issue_fix
issue_fix (Case Conflict)

并在参考日志中

$ ls .git/logs/refs/heads/
master
issue_fix
issue_fix (Case Conflict)

我无法使用git branch -D

删除
$ git branch -D "issue_fix (Case Conflict)"
error: branch 'issue_fix (Case Conflict)' not found.

仅删除".git/logs/refs/heads/issue_fix (Case Conflict)"".git/refs/heads/issue_fix (Case Conflict)"是否安全?

1 个答案:

答案 0 :(得分:4)

我在Dropbox文件夹中有我的回购,这通常是一个坏主意。 (Case Conflict)是Dropbox的两个具有相同小写名称的文件的标记。

当我创建一个大写字母的分支时,Dropbox会将其重命名为小写并添加冲突标记。

我通过删除对分支的引用来解决这个问题,但我也应该避免将我的repo保存在Dropbox文件夹中。它可以做比这更糟糕的事情。

使用git branch -D删除不起作用,因为文件名格式错误。

我手动删除了文件:

$ rm ".git/logs/refs/heads/issue_fix (Case Conflict)"
$ rm ".git/refs/heads/issue_fix (Case Conflict)"

但我不确定这是完全安全的。