git希望添加已跟踪的文件

git希望添加已跟踪的文件,git,duplicates,git-untracked,Git,Duplicates,Git Untracked,我在电脑上有一个大约70GB大小的存储库,当我将它复制到mac电脑上(不是克隆,只是简单的复制)时,它显示一些文件在被跟踪时未被跟踪。 当我添加它们时,它们似乎在repo对象信息中重复,但在工作树中却没有。因此,我对上次提交进行了硬重置,但文件再次显示为未跟踪。 我怎样才能解决这个问题?(知道pc上的repo运行良好)建议:在压缩成zip文件后尝试压缩,不要将存储库的工作目录从一台计算机复制到另一台计算机 问题 您的工作目录已签出相应行结尾中的文件。您的Windows计算机使用回车符和换行符来表

我在电脑上有一个大约70GB大小的存储库,当我将它复制到mac电脑上(不是克隆,只是简单的复制)时,它显示一些文件在被跟踪时未被跟踪。

当我添加它们时,它们似乎在repo对象信息中重复,但在工作树中却没有。因此,我对上次提交进行了硬重置,但文件再次显示为未跟踪。


我怎样才能解决这个问题?(知道pc上的repo运行良好)建议:在压缩成zip文件后尝试压缩,不要将存储库的工作目录从一台计算机复制到另一台计算机

问题 您的工作目录已签出相应行结尾中的文件。您的Windows计算机使用回车符和换行符来表示换行符,而您的Mac则不使用换行符。您的电脑可以在存储库中进行换行转换。将文件从Windows复制到Mac会将带有Windows样式行尾的文件引入Mac,因为它们不属于Mac

Git已确定您的文件有未老化的更改[1],因为您的行尾配置指示客户端在存储库中保留Unix样式的行尾,并在签出文件时转换为正确的行尾格式。这意味着,当您在PC上签出文件时,这些文件已转换为Windows样式的行尾。但是您的Mac希望不会更改存储库的行尾

因此,您的存储库包含Unix格式的文件,而Mac则包含Windows格式的文件。因此,当您运行
git status
时,git意识到工作目录中的文件与存储库中的文件不同。(仅在行尾上有所不同)并告诉您文件有未老化的更改

其他问题 不将存储库从一台计算机复制到另一台计算机还有其他原因。Git在创建或克隆存储库时检测计算机的行为(通过
Git init
Git clone
)。有关系统的数据,如文件系统是区分大小写还是不区分大小写,以及文件系统是否支持符号链接,都存储在存储库的配置中

如果要将具有工作目录的存储库从Windows计算机复制到Mac,则存储库将不再支持符号链接。从Mac到Linux机器,您的存储库会非常混乱,因为它认为它不区分大小写

最后,即使您在同一类型的计算机上复制存储库,甚至是在同一台计算机上复制存储库,也可能会遇到问题。Git在索引中缓存一些工作目录信息。复制工作目录将使该缓存在复制后失效,这将提供错误信息

解决方案 这是为数不多的几次您可能真的希望删除存储库并重新开始的情况之一。您可以删除工作目录中的所有文件并清理配置。但在这一点上,将这个存储库
git克隆到Mac上实际上要容易得多

由于存储库很大,如果不想花费网络通信开销,只需从复制的现有存储库中克隆即可。(它将忽略配置错误的工作目录文件和错误的配置。)例如,如果损坏的存储库位于
badrepo

git clone badrepo goodrepo

[1] :术语:您的文件有未老化的更改,您的文件未被跟踪。未跟踪的文件是那些尚未在存储库中的文件。

如果您能向我们展示至少一部分用于验证这一点的命令输出,那么就更容易给您提供建议。听起来像是行尾序列的问题…压缩什么??