Не удается выполнить git checkout master: неверный путь '?'

После "неудачного" git pull на моем местном master, ошибка не позволяет вернуться к master:

C: repo_folder> git checkout master
error: invalid path '?'

В ? должно быть, потому что это keybase репо.

Из другой ветки, где я проверил несколько файлов последней фиксации:

C: repo_folder> git diff origin/master --compact-summary
 "\004" (gone)                               | 1902  ---------------------------
 some irrelevant stuff                       | (num) -

Удаленный файл "\004" (этого никогда не было в моем районе), кажется, исходит от некоторых Mac OS (кто-то мог открыть csv и временный файл был создан, когда этот пользователь сделал фиксацию и нажал?).

  • обратите внимание, что файл, помеченный как (gone) должен быть удален git
  • проблема в том, что в имени файла есть символы, несовместимые с файловой системой Windows, и что файл никогда не существовал в моем локальном репозитории Windows.

Если я клонирую с платформы Linux, я могу оформить заказ на masterбез проблем. Однако в Windows нет возврата к master ветка.

Есть идеи, как решить эту проблему? (уже пробовал несколько сообщений безуспешно) Я не могу понять, как это происходит git даже не позволяет мне оформить заказ на master. Должен ли я подавать отчет об ошибке?

В качестве альтернативы, возможно, я мог бы создать новый master ветвь и избавьтесь от текущей.

РЕДАКТИРОВАТЬ

Клон из Linux помог определить, что файл ?действительно был там. Это также можно проверить непосредственно из Windows с помощью команды: git ls-tree origin/master (который показывал исходное проблемное имя "\004")

Принятый ответ включает случай, когда вы хотите сохранить содержимое файла, а в моем случае я только хотел от него избавиться. Итак, в моем случае я только что удалил файл из Linux, совершил и подтолкнул изменение и выполнил git fetch origin master:master забрать мой местный master с проверкой в ​​другой ветке (поскольку я не мог оформить заказ на master). Наконец-то это помогло, и я мог оформить заказ на master.

Надеюсь, это прояснит кого-то с похожей проблемой.

1 ответ

Решение

?(или, может быть, это EOT) нельзя использовать в качестве имени файла в Windows. Файл придется удалить или переименовать. Проще всего это сделать путем клонирования в системе, которая позволяет ? и исправляем.

Если у вас только Windows, Fixing Invalid Git Paths в Windows предлагает метод переименования файла без его проверки. Вкратце...

  1. git checkout origin/master -f чтобы оформить заказ без проблемного файла.
  2. Сделайте ветку.
  3. Добавьте и зафиксируйте "удаленный" проблемный файл.
  4. Использовать git ls-tree HEAD^ чтобы получить идентификатор проблемного файла.
  5. Использовать git cat-file -p <ID> чтобы получить содержимое проблемного файла.
  6. Поместите содержимое в новый файл.
  7. Добавить и зафиксировать.
Другие вопросы по тегам