2016-11-20 82 views
-1

我不小心做出具有相同的名称作为一个现有的分支的一个分支,但不同的情况下删除的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)"

+0

你正在使用哪个git版本? – mallaudin

+0

git版本1.9.1 – reasgt

+0

在沙箱中测试,我可以创建具有相同名称但不同大小的分支。不过,我不能在我的问题中重现问题。 – reasgt

回答

2

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

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

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

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

我手工删除的文件:

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

,但我不知道这是完全安全的。