Насколько грип через ваши поэтапные файлы до совершения?
-
29-09-2019 - |
Вопрос
Итак, до работы git commit
Я часто буду проходить следующее:
git grep --cached -l -I "debugger"
Я думал, что это было похоже на:
git diff --cached
(Что покажет вам все изменения, которые вы собираетесь совершить, т.е. покажет вам Diff в ваших поэтапных файлах).
К сожалению, я только что обнаружил, что --cached
вариант для git grep
Просто говорит GIT «только» взглянуть на все в своем индексе.
Так как я могу запустить git grep
И есть ли это только грип через мои поэтапные файлы?
(Да, я знаю, что могу просто сделать git diff --cached
И ищите в этом, но я предпочел бы получить программную способность Greep через мои поэтапные файлы.)
Решение
Если у вас есть Unix-подобная оболочка, ответ довольно прост:
git grep --cached "debugger" $(git diff --cached --name-only)
Это будет работать git grep
в списке поэтапных файлов.
Другие советы
Многие предварительно совершающиеся крючки git diff-index --cached -S<pat> REV
Чтобы найти изменения, которые добавляют или удалили конкретный шаблон. Итак, в вашем случае, git diff-index --cached -Sdebugger HEAD
. Анкет Вы можете добавить -u
Чтобы получить различия, в противном случае он просто идентифицирует оскорбительный файл.
Сначала вам нужно получить список файлов из индекса (исключая удаленные файлы). Это можно сделать со следующим:
git diff --cached --name-only --diff-filter=d HEAD
Во -вторых, вам необходимо использовать: префикс для доступа к содержимому файла в текущем индексе (поставлено, но еще не предпринято) см. Гитруризды Руководствоза дополнительной информацией.
git show :<file>
Наконец, вот пример объединения всего этого, чтобы Grep этот список файлов
# Get a list of files in the index excluding deleted files
file_list=$(git diff --cached --name-only --diff-filter=d HEAD)
# for each file we found grep it's contents for 'some pattern'
for file in ${file_list}; do
git show :"${file}" | grep 'some pattern'
done
Также Вот пример Крючком GIT Pre-Commit, который использует этот метод, чтобы проверить, что авторские права на сегодняшний день в курсе файлов будут совершенные.