当我输入git status时,我看到:
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: DIR/a
#
但是,在我的工作目录中,我看到这个文件实际上被调用dir/a了(注意小写dir而不是DIR)。
问题:我想将此修改后a的文件添加到暂存区并提交,但我希望它在我的工作目录中(显示dir/a) -与 git 将其视为DIR/a. 我怎样才能做到这一点?
重要的提示:
不幸的是,我不能仅仅git mv DIR/a dir/a因为DIR/a它实际上并不存在于工作树中。
目前我的.git/config文件显示ingorecase = true,所以我知道我必须将其设置为 false。然而,除了改变这个标志什么都不做之后,git status现在显示:
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: DIR/a
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# dir/
我预料到了这一点,因为 git 只跟踪内容,并且切换忽略大小写会使 git 认为添加了一个新文件。不幸的是,git 现在认为我有两个文件被修改,而实际上我只有一个。我想git status简单地显示dir/a(因为它在我的工作目录中)而不是DIR/a,与a我最近制作的相同差异。
附加说明
如果您对这种不稳定的情况最初是如何产生的感到好奇,我已经设法复制了我最初将我的目录的案例从 重命名为 时所犯的愚蠢DIR错误dir。如果您认为这有助于找到解决此问题的方法,我很乐意进行编辑,以揭示我是如何错误地使 git 如此困惑的。(这涉及到我不小心击中mv而不是git mv,并且不知道该ignorecase标志并将其保留为ignorecase=true)。