Git ошибка притяжения: невозможно создать файл (недопустимый аргумент)

Я пытаюсь синхронизировать удаленное репо с локальным репо, но получаю следующие ошибки. Некоторые файлы (которые не имеют расширения) не синхронизируются с локальным репо на машине WINDOWS, но я могу успешно синхронизировать работу на машине MAC.

Есть ли какие-либо настройки конфигурации в WINDOWS для обработки такого случая?

  • Использование TortoiseGit
  • 64-разрядная машина Windows 7

ДЕТАЛИ ОШИБКИ

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)

Ответы

Ответ 1

Если я хорошо прочитал этот журнал, эти файлы имеют имена, заканчивающиеся на "? 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 об этом сопоставлении, извините..

Эти имена файлов выглядят так, как будто у них есть параметры HTML-запроса. Это действительно требуется? может быть, это просто какой-то артефакт, который можно удалить? попробуйте поговорить с mantainers проекта, может быть, они смогут просто удалить этот нечетный суффикс?

Ответ 2

Я столкнулся с той же проблемой, но не хотел переименовывать или удалять эти файлы. Итак, обходной путь в случае, если вы можете жить без доступа к этим файлам с помощью разреженной проверки:

Перейдите в папку .git в своем репо и откройте файл config. (Вы также можете изменить свою конфигурацию с помощью черепахи - git, но я не установил ее здесь.) В разделе [core] добавьте строку

sparsecheckout = true

затем перейдите в папку .git/info и создайте файл sparse-checkout. Добавьте что-то вроде

*
!kickstarter/parsers/data/kickstarter/campaigndetails/*

Первая строка включает все, а вторая исключает все файлы в kickstarter/parsers/data/kickstarter/campaigndetails/. Теперь вы сможете проверить репо. Используя wild-cards, вы, вероятно, можете сделать более сложные исключения.

Ответ 3

Я использую bitbucket, и у него есть функция, позволяющая удалить файл проблемы.

Это то, что я делаю.

  • Перейдите в ваш репозиторий.
  • Выберите меню "commit".
  • Выберите ветку, в которой вы хотите удалить файл проблемы.
  • Перейдите в свой файл и нажмите на него. Вы увидите обзор файла, который показывает деталь файла, например. ваш код, время выполнения этого файла и т.д.
  • Посмотрите на верхний правый угол, вы увидите кнопку со стрелкой вниз (аналогично алфавиту v) щелкните по ней.
  • Он выйдет и отобразит кнопку переименования и кнопку удаления внутри нее.
  • Тогда это ваш выбор, переименуйте его или удалите. Выберите разумно.
  • После нажатия кнопки. Bitbucket покажет вам диалоговое окно, как сказано, и зафиксирует файл с кнопкой фиксации.
  • После фиксации вы можете вернуться к sourcetree и потянуть свой код без проблем.
  • Наслаждайтесь!