Git grep для всех новых и измененных файлов (перед фиксацией) - PullRequest
0 голосов
/ 03 октября 2018

Какую команду я могу запустить в моем Windows Git Bash, которая покажет мне имена файлов, предварительный просмотр (контекст) и номера строк всех мест, где в моем коде написано «TODO», ограничено новые файлы и измененные файлы?

неадекватный подход 1 (из здесь )

Это неуклюжий и не печатает номер строки:

function __greptodo {
    QUERY="TODO"
    for FILE in `git diff --name-only`; do
        grep "$QUERY" $FILE 2>&1 >/dev/null
        if [ $? -eq 0 ]; then
            echo '———————————————'
            echo $FILE 'contains' $QUERY
            grep "$QUERY" $FILE 2>&1
        fi
    done
}
alias greptodo=__greptodo

Неадекватный подход 2 (из здесь )

Это намного лучше (показывает контекст и включает в себя новые файлы и измененные файлы), но все еще не печатаетномера строк:

grep -s "TODO" $(git ls-files -m)

1 Ответ

0 голосов
/ 03 октября 2018

Флаг -n указывает grep показать номер строки, поэтому вы были близки.Попробуйте:

grep -sn "TODO" $(git ls-files -m)

Чтобы включить неотслеживаемые файлы, используйте флаг --others (-o) и флаг --exclude-standard, чтобы исключить файлы, обычно игнорируемые Git:

grep -sn "TODO" $(git ls-files -mo --exclude-standard)
...