我正在尝试将Linux机器上的提交提取到Windows机器中。我收到此错误消息:
error: git checkout-index: unable to create file my/folder/name/: (Invalid argument)
在 Linux 计算机上,似乎有2个名为'name'
和'Name'
的'name'文件夹。即使在'name'
下将它们联合起来并重新提交之后,我仍然会收到相同的错误消息。
在Windows上我有git版本1.7.3.1.msysgit.0,在Linux上我有git版本1.7.5.4。
我确实发现了bunch of seemingly related个SO这类问题,但没有一个有明确或相关的解决方案。
更新:这些文件托管在远程托管服务上,以便Windows和Linux计算机从远程仓库中提取。
答案 0 :(得分:2)
由于解决方案的怪异性,回答了我自己的问题。
第一步是@Don Branson,@ VonC和@robinst建议。我在Windows机器上的一个新文件夹中写了一个干净的clone
这似乎不起作用,git返回完全相同的错误。
但是git status
将违规文件夹显示为“已删除”,即使存在同名文件夹且包含正确的文件。
然后我上演并提交了“已删除”文件夹,推送到远程仓库。并从我原来的回购中提取。 Lo-and-behold 分支已正确更新。
答案 1 :(得分:1)
当你git pull
git将按顺序应用提交时。因此,即使目录由最终提交合并,它们也不会在它应用于提交到HEAD的提交中。我会在Windows机器上尝试一个新的git克隆。
答案 2 :(得分:1)
问题可能是Git首先尝试在删除旧目录name
之前创建新文件(在新名称Name
下)。因此,当它尝试创建新目录name
时,它不会注意到Name
已经存在,因为它将它们区分为区分大小写。
您可以尝试以下(当然,使用干净的工作目录):
my/folder/Name
(旧位置)。git reset --hard origin/branchname
(你要拉的分店)。或者,只需做一个新的克隆。