O Git agora tem a capacidade de assinar confirmações git commit -S
, o que é ótimo, mas às vezes eu esqueço a flag e commit
, às vezes, envio correções para as quais aplico am
, e esse comando não tem uma flag para assinar.
Existe uma maneira de adicionar uma assinatura a uma confirmação já gravada?
git config commit.gpgsign true
.Respostas:
Adicione a seguinte linha após cada confirmação que você deseja assinar
exec git commit --amend --no-edit -S
Isso executará este comando depois de escolher cada confirmação.
ATUALIZAR:
A maneira mais fácil de fazer isso é:
Isso refaz tudo até o desenvolvimento (ou qualquer hash) e você não precisa copiar e colar após cada confirmação.
fonte
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
tornagit resign HASH
git commit --amend --no-edit -n -S
.git push --force
?A assinatura de uma confirmação altera seu conteúdo; portanto, confirmações mais recentes, dependendo dela, mudarão seu hash.
Se você apenas deseja assinar a confirmação mais recente,
git commit -S --amend
funcionará.fonte
Eu uso
git rebase -i --root
(consulte Reescrever o histórico ) e mudopick
paraedit
.Então eu uso
git commit -S --amend --no-edit && git rebase --continue
(no Windows) para cada confirmação.fonte
Eu também tropecei no mesmo problema e aqui está a minha solução:
isso assinará todos os meus commits desde o primeiro commit inicial e também ignorará o gancho de commit que eu configurei usando o husky . Não há necessidade de mudar
pick
paraedit
.fonte
Se você deseja filtrar apenas confirmações específicas e assinar apenas elas, pode usar
filter-branch
:Isso é útil se, por algum motivo, você desejar assinar apenas seus próprios commits.
fonte
Se você precisar assinar com GPG todas as confirmações DESDE uma confirmação específica na ramificação atual, use o seguinte:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
Onde
<COMMIT>
está o ID de confirmação (por exemploabc123e5
).Isso tem o benefício adicional de não perturbar os metadados de confirmação (incluindo a data de confirmação).
Se você também gostaria de parar de receber a senha de GPG em cada confirmação, veja também esta resposta: https://askubuntu.com/a/805550
NOTA: A mudança de
gpg
paragpg2
para assinatura GIT exigirá que você reimporte sua chave privada no GPG 2.fonte