Я хочу, чтобы git предоставил мне список файлов в папке, не отредактированной после данной ревизии. - PullRequest
3 голосов
/ 09 февраля 2011

Я работал над проектом, который должен касаться практически всех представлений (например, в папке app / views), но там много представлений.Учитывая комбинацию bash и git, как получить список файлов, в которые я не вносил изменения с момента данной ревизии?

1 Ответ

4 голосов
/ 09 февраля 2011

Вероятно, есть более аккуратный способ сделать это, но я думаю, что работает следующее:

Если последняя ревизия перед изменениями была fa1afe1, то вы можете найти все файлы, которые изменились в app/viewsс помощью:

git diff --name-only fa1afe1 -- app/views

Кроме того, вы можете видеть все файлы, которые git отслеживает под app/views с помощью:

git ls-files app/views

Теперь вы можете найти все строки, которые появляются только ввывод одной из этих команд с использованием comm -3 и синтаксиса подстановки процессов в bash:

comm -3 <(git diff --name-only fa1afe1 -- app/views|sort) <(git ls-files app/views|sort)

(Возможно, вам будет удобнее отправить выходные данные двух команд во временные файлы и затем использовать commвместо использования процесса подстановки, с тех пор у вас будет решение, которое будет работать и с /bin/sh, и его будет легче понять.)

Эта команда также покажет файлы, которые были удалены в изменениях, посколькуfa1afe1, поскольку эти файлы не будут отображаться в выводе git ls-files.В качестве другого предупреждения, строго говоря, это просто покажет вам файлы, которые отличаются между этим коммитом и сейчас, поэтому он пропустит файлы, которые были изменены в одном коммите и впоследствии возвращены к их исходному содержимому.Если это проблема, тогда вы можете использовать git log с --name-only и соответствующим форматированием для создания списка измененных файлов вместо git diff.

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