Как получить только измененную часть файла, подлежащую обработке в хуке предварительной фиксации? - PullRequest
2 голосов
/ 22 апреля 2020

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

Вот скрипт, который я использовал:

changed_files=$(git diff-index --cached $against | \
    grep -E '[MA]   .*\.(c|cpp|cc|cxx)$' | cut -f 2)

Ответы [ 2 ]

3 голосов
/ 22 апреля 2020

git diff --cached должны показывать только поэтапные изменения.

Я думаю, что вы ищете:

git diff --cached --name-status | grep -E '[MAD] *.*\.(c|cpp|cc|cxx)$' | cut -f2

Кроме того, вы можно попробовать добавить опцию --name-only вместо передачи вывода через cut.

git diff-index --cached --name-only $against | grep -E '.*\.(c|cpp|cc|cxx)$'
1 голос
/ 22 апреля 2020

Если указанный файл подготовлен (т. Е. Был git add), то вы можете использовать git diff --staged или git diff --cached (оба являются синонимами).

Если у вас есть несколько подготовленных файлов, вы git diff --staged [path/filename].

можно указать, на кого вы хотите посмотреть
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...