Не удается выполнить 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 предлагает метод переименования файла без его проверки. Вкратце...
git checkout origin/master -f
чтобы оформить заказ без проблемного файла.- Сделайте ветку.
- Добавьте и зафиксируйте "удаленный" проблемный файл.
- Использовать
git ls-tree HEAD^
чтобы получить идентификатор проблемного файла. - Использовать
git cat-file -p <ID>
чтобы получить содержимое проблемного файла. - Поместите содержимое в новый файл.
- Добавить и зафиксировать.