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

pH *_*ito 10 git git-clone

我是Git的新手.

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

我很确定我的git状态应该是干净的.怎么了?

已删除的文件并没有帮助(我没有用checkout),也没有这个约未跟踪文件(我不使用Mac OS).

pH *_*ito 12

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

git config --global core.longpaths true
Run Code Online (Sandbox Code Playgroud)

在此之后,克隆进行得很顺利,状态也很干净.


Per*_*son 10

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

也许克隆出了点问题。不过应该不难修复,只需运行

git reset
Run Code Online (Sandbox Code Playgroud)

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


Ray*_*Luo 6

这个问题不仅让“对 git 不熟悉”的 OP 感到困惑。它也吓坏了我,一个相当大的 git verteran。:-)

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

了解根本原因使我们能够自信地决定如何/是否解决此问题:

  • 我们可以通过将那些有问题的文件名重命名为更短和/或仅包含通常的字母表来修复它。
  • 或者,从技术上讲,我们根本不必修复它。如果那些有问题的文件名在他们的目标平台上没有问题,并且我们正在处理这个 repo 的其他一些内容,我们可以像往常一样继续我们的工作;我们只需要记住不要将那些丢失的文件作为删除提交。(去过那里,做到了;不要在家里尝试这个。)