我正在尝试将一些提交压缩为一个。所做的更改涉及更改文件内容,以及仅更改某些文件或其目录的文件名大小写。
运行git status
时,
nothing to commit, working tree clean
但是,当我rebase -i <sha>
时,
error: The following untracked working tree files would be overwritten by checkout:
myDir/file1
myDir/file2
...
myDir/fileN
Please move or remove them before you switch branches.
Aborting
在我尝试压榨的提交历史的某个时刻,myDir
重命名为MyDir
但是,这些文件实际上都不在我的磁盘上。运行ls
显示新的MyDir
,但没有myDir
。
我该如何解决这个问题以便重新定基?
fyi,{{1}中ignorecase = false
中的.git/config
,我在Mac OSX上
答案 0 :(得分:2)
core.ignorecase
设置是Git跟踪您的操作系统实际行为方式的一种方式。如果Git可以创建名为README
的文件,然后使用名称readme
打开它,则操作系统的文件系统 不区分大小写。这意味着您的操作系统不能创建两个单独的文件,其名称仅大小写不同。
这也适用于目录。如果存在MyDir
,则Git尝试创建myDir
来保存名为myDir/file1
的文件,以此类推(由于Git认为大多数目录无害,即该目录已存在),这会失败,因为操作系统将仅使用现有的MyDir
。 Git尝试写入myDir/file1
将覆盖MyDir/file1
文件。如果这些文件当前包含有价值的数据,则您将希望像Git所建议的那样将它们移开。无论如何,您可能都希望将整个目录 MyDir
移开,以便Git可以创建一个拼写为myDir
(小写的m
)。 / p>
如果您的操作系统/文件系统确实不是大小写敏感的-如果您可以创建所有名为README
,{{1 }},readme
等,您可以更改ReadMe
设置以将这一事实通知Git。但是,如果您的系统不区分大小写,则将其更改归于Git,这将是一个坏主意。