A рифф на git: показать все измененные файлы между двумя коммитами: я хочу список всех файлов, которые были изменены между двумя коммитами, даже если они теперь одинаковы (т.е. изменены, а затем изменены обратно).
Git: показать все файлы, измененные между двумя коммитами
Ответ 1
Это лучшее, что я мог придумать:
git log --name-only --pretty=oneline --full-index HEAD^^..HEAD | grep -vE '^[0-9a-f]{40} ' | sort | uniq
Замените HEAD ^^ и HEAD на коммиты, которые вы хотите сравнить.
Моя попытка использует git log
с --name-only
, чтобы перечислить все файлы каждой фиксации между указанными. --pretty=oneline
делает часть выше списка файлов состоящей только из сообщения SHA и заголовка фиксации. --full-index
делает SHA полным 40 символов. grep
отфильтровывает все, что похоже на SHA, а затем пробел. Если у вас есть файлы, начинающиеся с SHA, а затем пробел, результат должен быть точным.
Ответ 2
Я думаю, что эта команда - ваш ответ:
git diff --stat abc123 xyz123 #where abc123 and xyz123 are SHA1 hashes of commit objects
Прямо из сообщества git
Если вы не хотите видеть весь патч, вы можете добавить параметр "-stat", который ограничит вывод на файлы, которые были изменены вместе с небольшим текстовым графиком, изображающим, сколько строк было изменено в каждом файл.
Ответ 3
Если вы хотите просто увидеть имена файлов, где commit b
находится в хронологическом порядке после a
:
git diff <a commit sha1>...<b commit sha2> --name-only # b is after a in time
Если вы хотите увидеть все имена файлов и что было изменено с commit a на commit b, отбросьте последний аргумент.
git diff <a commit sha1>...<b commit sha2> # shows file names and what changed in each file
Примером <commit sha1>
является идентификатор фиксации, такой как 675ee6860d2c273bcc6c6a0536634a107e2a3d9f
. Как правило, первые 8-10 цифр будут работать в большинстве проектов, но может потребоваться больше, если у проекта есть куча коммитов. Обычно я использую вывод id из git log --oneline
.
Когда вы получаете разницу в... b и b позже, чем вовремя, легко увидеть, что было изменено в каждом файле в хронологическом порядке.
Ответ 4
Это похоже на igorw, но он избегает удаления SHA через grep
:
git log --pretty='format:' --name-only HEAD^^..HEAD | sort -u
Если вы также хотите посмотреть, как файлы были изменены, замените --name-only
на --name-status
.
Ответ 5
Я бы использовал; взяв первые 8 хэшей фиксации. Если вы хотите, чтобы вы могли подключиться к файлу в соответствии с ниже:
git log 12345678..87654321 > C:\GitChanges.txt