Git clone导致删除&未跟踪的文件

时间:2016-08-16 16:43:39

标签: git git-clone

我是Git的新手。

我刚为Windows安装了Git(2.9.3)(10),然后我打开了git-bash并做了git clone <remoteURL>。使用远程存储库的整个副本创建一个新文件夹,这很好。但后来我运行了一个git status,我得到了大量的deleted文件(我想所有刚刚复制过的文件)准备就绪to be committed,并且存储库文件夹下的三个主要文件夹是untrackeddeleted文件实际上存在于我的驱动器上!

我很确定我的git状态应该是干净的。发生了什么事?

This关于已删除的文件没有帮助(我没有使用checkout),this也没有关于未跟踪的文件(我没有使用Mac OS)。

8 个答案:

答案 0 :(得分:12)

我正在检索一个路径很长的巨大项目。我忘了设置Git使用长路径:

git config --global core.longpaths true

在此之后,克隆工作正常并且状态清晰。

答案 1 :(得分:4)

此问题不仅使“ git的新手” OP感到困惑。这也吓坏了我,一个相当可观的git老手。 :-)

感谢这里其他答案的提示,我意识到这是由git引起的,它无法检出某些名称在当前文件系统和/或OS上不支持字符的文件。例如,当我克隆一个github Wiki仓库时,我遇到了同样的错误,某些Wiki页面的文件名恰好包含一个:,可以在我的Linux机器上很好地克隆它们,但是(事后看来) )显然不在我的Windows框中。

了解根本原因使我们对如何/是否解决此问题有一个自信的决定:

  • 我们可以通过将那些有问题的文件名重命名为较短的和/或仅包含常用字母的方式来在存储库中对其进行修复。
  • 或者,从技术上讲,我们根本不需要修复它。如果那些令人讨厌的文件名在他们的目标平台上很好,并且我们正在处理此回购协议的其他内容,则可以照常继续我们的工作;我们只需要记住不要将那些丢失的文件作为删除提交。 (到那儿去做,不要在家尝试。)

答案 2 :(得分:3)

如果您在Windows上遇到问题,可能会根据以下禁止的字符检查文件名:

<< / strong>(小于)
> (大于)
(冒号)
(双引号)
/ (正斜杠)
\(反斜杠)
| (垂直条或管道)
? (问号)
* (星号)

或者使用以下其中一个保留字命名的文件,或者其中一个以扩展名开头的文件: CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8和LPT9。

更多详细信息,请参见here

答案 3 :(得分:2)

听起来你已经以某种方式加载了一个空索引。使用命令git read-tree --empty发生这种情况的正常方式,但这不是您通常使用/知道的新git用户。

克隆可能出了问题。这应该不难解决,只需运行

git reset

并且索引应该恢复到最新提交的内容。

答案 4 :(得分:0)

也可以是文件名中的不可见字符,请在其他系统上查看;)

答案 5 :(得分:0)

万一您到了这里并且longpath属性不起作用并且您在Windows上运行并使用Gi​​t Bash,则可能在Windows中使用保留关键字来保存文件。即,我的文件中包含nul,克隆后将其删除。我花了半天的时间才发现这是保留关键字。

解决方案是简单地重命名文件(在您可以创建文件的其他计算机/操作系统上)。推动它,然后在Windows计算机上重做克隆操作。

答案 6 :(得分:0)

我在Windows 10上遇到了类似的问题,我还检查了其他git运行正常的窗口,我的git版本是2.24.xx。我安装了git 2.16.x的git旧版本,它解决了这个问题。试试吧,让我们知道

答案 7 :(得分:0)

就我而言,我已在Mac上不区分大小写的文件系统中克隆了该存储库,但是该存储库包含一个名为Config的文件和一个名为config的目录,该文件系统认为该目录是相同的。事情。因此,克隆后它显示文件Config已删除。

解决方法是在区分大小写的文件系统上克隆存储库。