当我输入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
)。