git rebase:签出将覆盖以下未跟踪的工作树文件(尽管文件是跟踪的)

git rebase:签出将覆盖以下未跟踪的工作树文件(尽管文件是跟踪的),git,rebase,Git,Rebase,在尝试交互式重新基址时,git说: error: The following untracked working tree files would be overwritten by checkout: # some files here Please move or remove them before you switch branches. Aborting error: could not detach HEAD 所讨论的文件集似乎因我标记要编辑的提交而有所不同。它们都

在尝试交互式重新基址时,git说:

error: The following untracked working tree files would be overwritten by checkout:
        # some files here
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
所讨论的文件集似乎因我标记要编辑的提交而有所不同。它们都是在分支中的提交过程中修改的跟踪文件,然后在子提交过程中最终删除

git为什么要这么做?我怎么修理它


谢谢

Git正在抱怨,因为文件未被跟踪

我知道你说过:

[这些]文件被跟踪

但事实并非如此:你还说:

他们是。。。最后在后续提交中删除

当出现故障时,文件已从索引中删除,但未从工作树中删除。这就是未跟踪文件的定义:它是工作树中的文件,但不在索引中

具体而言,这:

当您输入以下命令时,告诉您或我您现在签出的提示提交中的文件当前未跟踪:

git rebase -i <start-point>
但此处标识的提交包含它们。Git将需要Git签出该提交,但在签出该提交时,它将用跟踪的文件覆盖未跟踪的文件


如果最后一点在你的头脑中给了你一个/WTF噪音Git在抱怨,因为文件没有被跟踪

我知道你说过:

[这些]文件被跟踪

但事实并非如此:你还说:

他们是。。。最后在后续提交中删除

当出现故障时,文件已从索引中删除,但未从工作树中删除。这就是未跟踪文件的定义:它是工作树中的文件,但不在索引中

具体而言,这:

当您输入以下命令时,告诉您或我您现在签出的提示提交中的文件当前未跟踪:

git rebase -i <start-point>
但此处标识的提交包含它们。Git将需要Git签出该提交,但在签出该提交时,它将用跟踪的文件覆盖未跟踪的文件

如果最后一点在你的头脑中给了你一个/WTF噪声假设你有:

提交的历史记录,其中文件foo.txt被修改,然后被删除; 目前,在跟踪的文件旁边,磁盘上还有一个未跟踪的foo.txt版本。 在这种情况下:git rebase会抱怨,因为它不知道如何处理当前未跟踪的文件foo.txt而不删除其内容。

假设您有:

提交的历史记录,其中文件foo.txt被修改,然后被删除; 目前,在跟踪的文件旁边,磁盘上还有一个未跟踪的foo.txt版本。
在这种情况下:git rebase会抱怨,因为它不知道如何处理当前未跟踪的文件foo.txt而不删除其内容。

谢谢@torek。您的回复让我意识到:所讨论的文件确实已被修改和删除,但我已在其确切位置创建了文件,其名称仅在大小写上有所不同,例如FooDao.java,而不是FooDao.java。@pointyhat:到目前为止,最简单的方法是启动Linux或其他一些文件名不同的系统。例如,在Mac上,使用VirtualBox。在Mac上,您还可以创建区分大小写的磁盘映像并将其装载,然后在那个文件系统中工作。在你答案的哪个滚动页上,我可以找到简洁的说明,告诉你如何避免在一次提交时,在master上不断重新设置主题分支时重复遇到这种情况?@SzczepanHołyszewski:不确定你所说的滚动页是什么意思:整个答案都可以显示在屏幕上,只需调整字体大小即可小!:-不幸的是,除了避免任何未跟踪的文件之外,这里没有简单的方法。这是可能的,尤其是添加了工作树,但并不总是实用的。它可能还需要使用带有区分大小写文件系统的系统,例如Linux主机。我的观点是,既然我正在通过重定基址重写历史,有没有办法永久修复主题分支上的违规提交?谢谢@torek。您的回复让我意识到:所讨论的文件确实已被修改和删除,但我已在其确切位置创建了文件,其名称仅在大小写上有所不同,例如FooDao.java,而不是FooDao.java。@pointyhat:到目前为止,最简单的方法是启动Linux或其他一些文件名不同的系统。例如,在Mac上,使用VirtualBox。在Mac上,您还可以创建区分大小写的磁盘映像并将其装载,然后在那个文件系统中工作。在你答案的哪个滚动页上,我可以找到简洁的说明,告诉你如何避免在一次提交时,在master上不断重新设置主题分支时重复遇到这种情况?@SzczepanHołyszewski:不确定你所说的滚动页是什么意思:整个答案都可以显示在屏幕上,只需调整字体大小即可小!:-不幸的是,t
这里没有简单的方法,除了避免任何未跟踪的文件。这是可能的,尤其是添加了工作树,但并不总是实用的。它可能还需要使用具有区分大小写的文件系统的系统,例如Linux主机。我的问题是,既然我正在通过重定基址重写历史,有没有办法永久修复主题分支上的违规提交?