Проверка Git с использованием спецификации пути с подстановочным знаком

#git #path #branch #wildcard #git-checkout

#git #путь #ветвь #подстановочный знак #git-проверка

Вопрос:

Я хотел бы восстановить некоторые файлы в рабочем каталоге до состояния последней фиксации в текущей локальной ветке, что master , однако, мои попытки использовать git checkout для достижения этой цели неизменно заканчивались неудачей.

Я подтвердил, что работает следующее: git checkout HEAD src/graphql/User.ts

Но я знаю, что я должен иметь возможность использовать подстановочный знак в спецификации пути, т.Е. : git checkout HEAD '*/User.ts'

Однако это не удается.

Как я могу использовать спецификацию пути с подстановочным знаком для восстановления ограниченного набора файлов в состояние, сохраненное в последнем или предыдущем коммите?

Комментарии:

1. */User.ts будет соответствовать только одному уровню. Нравится src/User.ts

2. Хороший момент, как я могу соответствовать на всех уровнях? git checkout HEAD '**/User.ts' выдает мне ту же ошибку, хотя, похоже, это правильное использование, основанное на ( git-scm.com/docs/gitglossary#def_pathspec ).

Ответ №1:

Как оказалось, есть два решения этой проблемы.

1. Git выпустил новую функцию, restore которая позволяет использовать спецификацию пути. См. (https://git-scm.com/docs/git-restore ). Итак

git restore */User.ts

будет работать.

2. Следующее также будет работать, хотя я не совсем уверен, почему:

git checkout -- '*/User.ts'

Комментарии:

1. Помните, что за расширения оболочки отвечает не команда git, а оболочка, которую вы используете.

2. Обратите внимание, что это git checkout -- <pathspec> означает извлечение из индекса , в то время git checkout HEAD -- <pathspec> как извлечение означает извлечение из текущего коммита .