错误重定基准:不存在的未跟踪文件将被覆盖

时间:2019-02-14 14:29:08

标签: git rebase

我正在尝试将一些提交压缩为一个。所做的更改涉及更改文件内容,以及仅更改某些文件或其目录的文件名大小写。

运行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上

1 个答案:

答案 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,这将是一个坏主意。