git想要添加已经跟踪的文件

时间:2018-04-18 08:12:36

标签: git duplicates git-untracked

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

当我添加它们时,它们似乎在repo对象信息中重复,但当然不在工作树中。所以我对最后一次提交进行了硬重置,但文件再次显示为未跟踪。

如何解决这个问题? (知道电脑上的回购工作正常)

2 个答案:

答案 0 :(得分:7)

不要将存储库的工作目录从计算机复制到计算机。

问题

您的工作目录已检出相应行结尾的文件。您的Windows机器使用回车符和换行符来表示换行符,而Mac则不然。 You should have configured您的PC在您的存储库中进行行结束转换。将文件从Windows复制到Mac会将带有Windows样式行结尾的文件引入Mac,这些文件不属于Mac。

Git已经确定您的文件有非分段更改 [1],因为您的行结束配置指示您的客户端在存储库中保留Unix样式的行结尾并转换为正确的行结束格式检查文件。这意味着当您在PC上检出文件时,它们会转换为Windows样式的行结尾。但是你的Mac希望改变存储库的行结尾。

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

其他问题

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

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

最后,即使您在同一类型的计算机上复制存储库 - 甚至是同一台计算机本身 - 也可能会遇到问题。 Git在索引中缓存一些工作目录信息。复制工作目录 应该在复制后使but some Git clients may (incorrectly) obey the cache无效,这会产生错误信息。

解决方案

这是少数时间之一,您可能确实想要删除您的存储库并重新开始。您可以删除工作目录中的所有文件清理配置。但是在这一点上,将git clone这个存储库放到你的Mac上实际上要容易得多。

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

git clone badrepo goodrepo

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

答案 1 :(得分:-4)

建议:压缩成zip文件后尝试压缩