#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>
как извлечение означает извлечение из текущего коммита .