Извлечение определенного файла из определенного коммита дает «error: pathspec filename не соответствует» - PullRequest
0 голосов
/ 15 февраля 2019

Я использую git в Windows.

Скажем, я хочу проверить, не коммитить fe4fd (сокращенно, чтобы примеры были короче), а конкретно файл foo.html из коммита fe4fd.

Согласно документации, я должен иметь возможность использовать

git checkout fe4fd foo.html

, и это должно работать.Или, возможно,

git checkout fe4fd -- foo.html

, потому что тире кажутся необязательными.

В любом случае.Я в правильном каталоге.

Если я делаю git status foo.html или git reflog foo.html и т. Д., Все кажется нормальным и он знает, что файл находится там.

все выглядит нормально

Я могу сделать это:

git checkout fe4fd

и он отлично работает

Я могу сделать это:

git checkout foo.html

, но я не могу сделать

git checkout fe4fd foo.html

, потому что каждыйКогда я получаю

ошибка: pathspec 'foo.html' не соответствует ни одному из файлов, известных git.

Я пробовал

  • полные пути от C:/whatever до foo.html
  • локальных путей, таких как ./foo.html
  • , включая вложенную папку, например ../myrepo/foo.html
  • , заключающих водинарные и двойные кавычки

что мне не хватает?

TIA.

ОБНОВЛЕНИЕ : https://stackoverflow.com/users/6330106/elpiekay дало мне доответ.ElpieKay, если вы оставите свой комментарий как ответ, я отмечу его как правильный.

Ответ таков: во время этого коммита , файл не был по этому пути, потому что родительская папка была переименована после этой фиксации.

Я понял это, прочитав документацию для git log и узнав, что она не будет следовать истории файла через изменение пути, если вы не измените путьвключите флаг --follow.

Я сделал то, что предложил ElpieKay, и файл явно не был частью коммита.Что было не так, потому что я знал, что это было.Но файл, который я пытался проверить, был, скажем, bar/foo.html, и этот путь не существовал во время проверки, которую я искал.Во время этой проверки это было в baz/foo.html.

Чтобы доказать это, я создал новую папку baz/, cd d для нее, и извлек файл из фиксации.Это сработало.

...