Как вернуть неустановленные изменения в файлы определенного типа в git
У меня есть куча модифицированных файлов в моем репозитории git, и большое количество из них - файлы xml. Как вернуть изменения (reset изменения) только xml файлов?
Ответы
Ответ 1
Спасибо всем за ваши ответы, но я нашел для меня наиболее точное решение:
git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout --
sed - пользователь, чтобы избежать пробелов, которые беспокоили xargs, и все работает очень быстро и точно.
Ответ 2
Вам не нужны find
или sed
, вы можете использовать подстановочные знаки, поскольку git понимает их (не зависит от вашей оболочки):
git checkout -- "*.xml"
Кавычки не позволят вашей оболочке развернуть команду только файлам в текущем каталоге до ее выполнения.
Вы также можете отключить расширение оболочки оболочки (с помощью bash):
set -f
git checkout -- *.xml
Это, конечно же, безошибочно стирает ваши изменения!
Ответ 3
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD
или что-то подобное, если ваша система не имеет find
и xargs
. Или просто git checkout HEAD **/*.xml
в zsh
или любой другой оболочке с этой формой рекурсивного глобирования.