Відповіді:
Додайте наступний рядок після кожного зобов'язання, яке ви хочете підписати
exec git commit --amend --no-edit -S
Ця команда буде запущена після вибору кожного комітету.
Найпростіший спосіб зробити це:
git rebase --exec 'git commit --amend --no-edit -n -S' -i development
Це відновлює все до розробки (або будь-якого хешу), і вам не доведеться копіювати пасту після кожного введення.
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
стаєgit resign HASH
git commit --amend --no-edit -n -S
.
git push --force
?
Я використовую git rebase -i --root
(див. Історію переписування ) та переходжу pick
на edit
.
Тоді я використовую git commit -S --amend --no-edit && git rebase --continue
(у Windows) для кожної комісії.
Це підписується вручну для кожного комітету. Я сподіваюся, що ми знайдемо краще рішення.
Я також натрапив на ту ж проблему, і ось моє рішення:
git rebase -i --root --exec 'git commit --amend --no-edit --no-verify -S'
це підпише всі мої зобов’язання з першого початкового комітету, а також обійде гачок фіксації, яку я встановив за допомогою husky . Немає необхідності змінювати pick
вedit
.
Якщо ви хочете відфільтрувати лише певні комісії та підписати лише їх, ви можете використовувати filter-branch
:
git filter-branch --commit-filter 'if [ "$GIT_COMMITTER_EMAIL" = "user@domain.com" ];
then git commit-tree -S "$@";
else git commit-tree "$@";
fi' HEAD
Це корисно, якщо ви з якоїсь причини хочете підписати лише власні зобов’язання.
Якщо вам потрібно підписати GPG, усі зобов’язуються з певної комісії в поточній гілці, замість цього ви можете скористатись наступним:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
Де <COMMIT>
ідентифікатор фіксації (наприклад abc123e5
).
Це має додаткову вигоду, що вона не порушує метадані фіксації (включаючи дату виконання).
Якщо ви також хочете перестати отримувати запит на отримання парольної фрази GPG під час кожного перегляду, також перегляньте цю відповідь: https://askubuntu.com/a/805550
ПРИМІТКА. Для переходу gpg
на gpg2
підпис для GIT потрібно буде повторно імпортувати приватний ключ у GPG 2.
git config commit.gpgsign true
.