当我点击'git status'时,它会显示2个文件夹,其中包含很久以前被跟踪过的文件:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/UI/Views/Shared/EditorTemplates/
# src/Web/helpers/
nothing added to commit but untracked files present (use "git add" to track)
Git GUI没有按预期显示任何内容。
使用portablegit 1.7.1,但尝试了1.7.0.2 - 结果相同。
导致这种情况的原因是什么?
$ cat .gitignore
.nu/*
lib/*
*~
*.swp
*.swo
*_ReSharper*
doc/*
RAPLM.suo
RAPLM.5.1.ReSharper.user
src/*/bin/*
src/*/obj/*
src/*/Debug/*
src/*/Release/*
src/Domain/unused
@Charles Bailey
lapsaarn@WW021198 /d/work/asdf (master)
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/UI/Views/Shared/EditorTemplates/
# src/Web/helpers/
nothing added to commit but untracked files present (use "git add" to track)
lapsaarn@WW021198 /d/work/asdf (master)
$ git add src/Web/helpers/
lapsaarn@WW021198 /d/work/asdf (master)
$ git add src/Web/helpers/*
lapsaarn@WW021198 /d/work/asdf (master)
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/UI/Views/Shared/EditorTemplates/
# src/Web/helpers/
nothing added to commit but untracked files present (use "git add" to track)
lapsaarn@WW021198 /d/work/asdf (master)
$
@Charles
$ git ls-tree -r HEAD | grep -i helpers
100644 blob 843de27f850308786140a7c09f67b5ef99184630 src / web / helpers / HtmlHelperExtensions.cs
答案 0 :(得分:13)
Charles Bailey在评论中正确诊断了问题:“git add
”对不区分大小写的Os。
它链接到msysgit的issue 286:“目录名称的大小写敏感性”,即使您将core.ignorecase
设置为“{{1>},问题仍然存在(同样,对于目录)真。
当您添加“src\Web
”(大写字母为“W
”)时,如果您的索引已包含“src\web
”(小写字母'{{1},则不会添加任何内容}}“)。
提出补丁但被拒绝:
该文件夹似乎未列为未跟踪,因为
w
会尝试将旧名称与新名称进行比较,最终找不到匹配项 新文件夹(即使其中的文件仍然被跟踪!) 编写了一个非常粗鲁的补丁(下面内省),试图解决这个问题 现在......对于我的最小情况,这是有效的 - 该目录不再列为未跟踪。但我强烈期望这是一个破坏补丁,至少出于以下原因:不区分大小写的比较应该打破二进制搜索,因为如果我在索引中有更多文件,套管应该返回错误的位置。
directory_exists_in_index()
所以你需要:
dir.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/dir.c b/dir.c
index e05b850..c55a15c 100644
--- a/dir.c
+++ b/dir.c
@@ -444,7 +444,7 @@ static enum exist_status directory_exists_in_index(const char
*dirname, int len)
struct cache_entry *ce = active_cache[pos++];
unsigned char endchar;
- if (strncmp(ce->name, dirname, len))
+ if (strnicmp(ce->name, dirname, len))
break;
endchar = ce->name[len];
if (endchar > '/')
--
1.6.4.msysgit.0.2.gcb017.dirty
”更改为工作目录中的“Web
”(文件系统)web
”更改为索引(web
)中的“Web
”。