Stack overflow地址:windows - Git pull error: unable to create file (Invalid argument) - Stack Overflow’
翻译:
我尝试使用本地代码去同步远程仓库的代码。一些文件(没有扩展名)没有得到同步在Windows机器上,但是我可以在MAC机器上同步成功。
在Windows上有什么配置来处理这个问题吗?
1.使用TortoiseGit
2.Windows7 64位机器
错误详细信息:
git.exe clone --progress -v "https://github.com/xxxx/xxxxx.git" "C:\Data\GitHub\simility\vishesh-common"
Cloning into 'C:\Data\GitHub\simility\vishesh-common'...
POST git-upload-pack (200 bytes)
remote: Counting objects: 3912, done.
remote: Compressing objects: 100% (487/487), done.
Receiving objects: 100% (3912/3912), 2.70 MiB | 567.00 KiB/s, done.
Resolving deltas: 100% (1578/1578), done.
remote: Total 3912 (delta 409), reused 0 (delta 0)
Checking connectivity... error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030050305_fantasy-trilogy-spin?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030295038_laser-dogs?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030315317_arizona-native-bird-painting-series?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030315317_native-birds-ii?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030552097_ikeyboard-0?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030552097_ikeyboard?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030552097_only-you-can-prevent-computercide?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030552097_vector-cupholder-protect-your-laptop-and-your-lap?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_103055429_death-of-an-angel?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030650665_rachel-vanslyke-making-a-new-record-together-we-ca?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1030835091_russian-trucks-of-world-war-two?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1031873800_prop-expansion-next-level?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1031873800_prop-project-expansion?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1099860912_yaw-clock?ref=users (Invalid argument)
error: unable to create file kickstarter/parsers/data/kickstarter/campaigndetails/_projects_1099992656_heavenly-sight-a-vision-out-of-blindness?ref=users (Invalid argument)
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status' and retry the checkout with 'git checkout -f HEAD'
git did not exit cleanly (exit code 128) (21746 ms @ 29-09-2014 13:32:13)
Answer1:
我读了错误日志,这些文件是以 "?ref=users"结尾。
Windows不允许你使用 ?在文件名中,就像不允许有 \或者 *一样。在Linux下这可能是可行的,如果你删除这些字符。在Windows下,我认为这完全不可行,看http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247。
你使用这样的名字很难操作,我想不出任何方法来进行1:1的同步,你可以获取并使用安全的名字来保存它们,就像这样:_projects_1099992656_heavenly-sight-a-vision-out-of-blindness__ref=users,但是我不知道如何自动操作,或者之后通知git如何进行映射,抱歉。
Answer2:
我遇到过这些问题,但是没有想要重命名或者删除这些文件。所以这里有一个解决办法,在不使用稀疏校验的情况下访问这些文件:
去到你的仓库的 .git目录并打开 config文件。(你也可以通过tortoise-git修改配置文件,但是我忘记它装在哪里了)在[core]段添加下面的行:
sparsecheckout = true
然后去到 .git/info目录并创建 sparse-checkout文件。加入下面这些:
*
!kickstarter/parsers/data/kickstarter/campaigndetails/*
第一行包含任何字符,第二行不包含在 kickstarter/parsers/data/kickstarter/campaigndetails/里面的所有文件。你现在应该可以checkout仓库了。你也可以使用通配符做更多的不包含文件规则。
Answers3:
我正在使用 bitbucket,它有这些函数你可以删除有问题的文件。
这是我做的事情。
1.进入你的仓库目录。
2.选择菜单"commit"。
3.选择你想要移除问题文件的branch。
4.找到你的文件并点击它。你将会看到这个文件的详细信息,比如你的代码,日期时间和文件提交等。
5.看右上角,你将会看到一个向下的箭头(类似字母V),点击它。
6.它会下拉并显示重命名和删除的按钮。
7.这是你的选择了,选择重命名或者删除,做出明智的选择。
8.当你点击了按钮,Bitbucket会显示一个对话框,它会说提交你的文件点击提交按钮。
9.提交之后你会回到Sourcetree,然后提交你的代码。
10.享受它吧。