Получение списка sha-1 для всех Unpushed Git Commits [duplicate]

Вы можете достичь этого, используя динамический TSQL (не забудьте использовать QUOTENAME, чтобы избежать атак SQL-инъекций):

Сдвиги с динамическими столбцами в SQL Server 2005

С поворотами с динамическим Столбцы в SQL Server 2005

Обязательная ссылка на проклятие и благословения динамического SQL

31
задан Mark Amery 1 January 2014 в 23:49
поделиться

2 ответа

Альтернативой git log --format является команда сантехника git rev-list . Для сценариев это рекомендуемый выбор, так как интерфейс можно полагать стабильным (хотя для простых целей, подобных этому, я был бы удивлен, если git log недостаточно стабилен).

for sha1 in $(git rev-list HEAD) ; do
    : # Do something with $sha1
done
22
ответ дан Kenny Evitt 25 August 2018 в 23:19
поделиться

Вы можете использовать аргумент --format с пользовательским форматом , который включает только sha1:

git log --format=format:%H

Вышеприведенная команда дает выход например:

0375602ba2017ba8750a58e934b41153faee6fcb
4390ee9f4428c84bdbeb2fed0a461099a6c81b39
bff53bfbc56485c4c1007b0884bb1c0d61a1cf71

Вы можете циклически перехватывать хэши фиксации в Bash следующим образом:

for sha1 in $(git log --format=format:%H); do
    : # Do something with $sha1
done

Это немного более подробно, чем , используя git rev-list , но может быть вашим единственным вариантом, если вы хотите использовать параметры упорядочения или фильтрации для git log, которые не поддерживаются git rev-list, например -S.

60
ответ дан Community 25 August 2018 в 23:19
поделиться