我是Git的新手。
我刚安装了Git(2.9.3)适用于Windows(10),然后我打开git-bash,运行了一个git clone <remoteURL>
。一个新的文件夹被创建,里面有远程仓库的完整副本,这很好。但是我运行了一个git status
,得到了大量的deleted
文件(我想所有刚刚复制的文件)准备好了to be committed
,repository文件夹下的三个主要文件夹是untracked
。
我很确定我的git状态应该是干净的。这是怎么回事?
关于已删除文件的This没有帮助(我没有使用checkout
),关于未跟踪文件的this也没有帮助(我没有使用Mac OS)。
9条答案
按热度按时间jbose2ul1#
我正在检索一个包含很长路径的大型项目。我忘了设置Git使用长路径:
在此之后,克隆进行得很顺利,状态也很干净。
falq053o2#
这听起来像是你加载了一个空索引,通常情况下是用命令
git read-tree --empty
,但这不是git的新用户通常使用/知道的。可能是克隆体出了问题,不过应该不难修复,跑就行了
并且索引应该被恢复到最近提交的内容。
eiee3dmh3#
这个问题不仅让“刚接触Git”的楼主感到困惑,也让我这个相当不错的Git verteran吓得屁滚尿流。:-)
感谢其他答案的提示,我意识到这是由于git碰巧无法 checkout 一些文件名包含当前文件系统和/或操作系统不支持的字符的文件。例如,我在克隆github wiki repo时遇到了同样的错误,一些wiki页面碰巧在其文件名中包含
:
,它们可以在我的Linux系统上克隆,但(事后看来)显然不是在我的Windows盒子上。了解根本原因后,我们就可以自信地决定如何/是否修复此问题:
p5cysglq4#
如果在Windows上遇到问题,可能会检查文件名是否包含这些禁用字符:
〈(小于)
〉(大于)
:(冒号)
"(双引号)
/(正斜杠)
\(反斜扛)
|(竖线或竖线)
?(问号)
*****(星号)
或使用以下保留字之一命名的文件,或使用以下保留字之一后跟扩展名的文件:连接、PRN、辅助、空、通信1、通信2、通信3、通信4、通信5、通信6、通信7、通信8、通信9、LPT 1、LPT 2、LPT 3、LPT 4、LPT 5、LPT 6、LPT 7、LPT 8和LPT 9。
更多详细信息,请参阅here。
t2a7ltrp5#
如果你在这里结束和longpath属性不工作,你在Windows上运行,并使用Git Bash,你可能有文件使用保留关键字在Windows中.即,我有文件与
nul
在它,和那些被删除后克隆.我花了半天时间找到它是这个保留关键字的事情.解决方案是简单地重命名文件(在您可以创建它的其他机器/操作系统上)。推送它,然后在您的Windows机器上重做克隆操作。
du7egjpx6#
在我的例子中,我在Mac上的一个不区分大小写的文件系统中克隆了repo,但是repo包括一个名为
Config
的文件和一个名为config
的目录,文件系统认为这是同一个东西。修复方法是在区分大小写的文件系统上克隆存储库。
iklwldmw7#
也可以在文件名中隐藏字符,在其他系统上查出来;)
yhuiod9q8#
我遇到了类似的问题与windows 10,我检查了其他窗口以及在那里git工作正常,我的git版本是2.24.xx.我安装了git旧版本的git 2.16.x,它解决了这个问题.尝试一下,让知道
pftdvrlh9#
将某些文件显示为已修改的行为可能与行尾设置和使用的多个客户端有关。每个操作系统都以自己的方式处理行尾。因此,如果您正在处理在多个操作系统中编辑文件的存储库,您可能会看到意外的结果
以下命令将永久解决此问题
git配置--全局核心。autocrlf输入