Git sekarang memiliki kemampuan untuk menandatangani komit git commit -S
, yang sangat bagus, tetapi kadang-kadang saya lupa flagnya commit
, dan kadang-kadang saya mengirimkan sendiri patch yang saya ajukan am
, dan perintah itu tidak memiliki bendera untuk ditandatangani.
Apakah ada cara untuk menambahkan tanda tangan ke komit yang sudah direkam?
git config commit.gpgsign true
.Jawaban:
Tambahkan baris berikut setelah setiap komit yang ingin Anda tandatangani
exec git commit --amend --no-edit -S
Ini akan menjalankan perintah ini setelah memilih setiap komit.
MEMPERBARUI:
Cara yang lebih mudah untuk melakukan ini adalah:
Ini mengubah segalanya hingga pengembangan (atau hash apa pun) dan Anda tidak perlu menyalin paste setelah setiap komit.
sumber
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
menjadigit resign HASH
git commit --amend --no-edit -n -S
.git push --force
?Menandatangani komit mengubah isinya, jadi komit yang lebih baru tergantung padanya akan mengubah hash mereka.
Jika Anda hanya ingin menandatangani komit terbaru,
git commit -S --amend
akan berhasil.sumber
Saya menggunakan
git rebase -i --root
(lihat Sejarah Penulisan Ulang ) dan berubahpick
menjadiedit
.Kemudian saya menggunakan
git commit -S --amend --no-edit && git rebase --continue
(pada Windows) untuk setiap commit.sumber
Saya juga menemukan masalah yang sama dan inilah solusi saya:
ini akan menandatangani semua komit saya dari komit awal pertama dan juga memotong komit yang saya atur menggunakan husky . Tidak perlu diubah
pick
keedit
.sumber
Jika Anda ingin memfilter hanya komit tertentu dan hanya menandatanganinya, Anda dapat menggunakan
filter-branch
:Ini berguna jika, karena alasan tertentu, Anda hanya ingin menandatangani komitmen Anda sendiri.
sumber
Jika Anda perlu GPG menandatangani semua komitmen SEJAK komit tertentu pada cabang saat ini, Anda dapat menggunakan yang berikut ini sebagai gantinya:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
Di mana
<COMMIT>
id komit (misalnyaabc123e5
).Ini memiliki manfaat tambahan sehingga tidak mengganggu metadata komit (termasuk tanggal komit).
Jika Anda juga ingin berhenti diminta untuk memasukkan frasa sandi GPG Anda di setiap komit, lihat juga jawaban ini: https://askubuntu.com/a/805550
CATATAN: Beralih dari
gpg
kegpg2
untuk penandatanganan GIT akan mengharuskan Anda mengimpor kembali kunci pribadi Anda di GPG 2.sumber