(Ini sebagian besar didasarkan pada A Git Horror Story: Integritas Repositori Dengan Komitmen Ditandatangani — bacaan yang sangat bagus, dan lebih banyak informasi daripada yang bisa saya masukkan ke dalam jawaban.)
Ada beberapa cara di mana repositori git dapat dikompromikan (ini bukan cacat keamanan, hanya fakta kehidupan — orang tidak boleh menghindari menggunakan git karena ini). Misalnya, seseorang mungkin telah mendorong ke repositori Anda yang mengaku sebagai Anda. Atau dalam hal ini, seseorang bisa saja mendorong ke repositori orang lain yang mengaku sebagai Anda (seseorang bisa mendorong ke repositori mereka sendiri yang mengaku sebagai Anda juga). Ini hanya bagian dari kehidupan dalam DVCS.
Sebagai contoh:
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
Di sana, saya telah mengubah konfigurasi git saya untuk berpura-pura aku kamu. Dan sekarang saya bisa berkomitmen dan membiarkan komitmen itu entah bagaimana membuat jalan mereka ke produksi build, dan sepertinya Anda sudah melakukannya.
Dengan menandatangani komit (dan tag), orang dapat membuktikan bahwa komit dan tag tertentu berasal dari Anda (dan hal-hal yang tidak ditandatangani seharusnya tidak masuk ke build produksi). Itu benar-benar kunci dari semuanya — dengan menandatangani komitmen, Anda telah mengatakan itu pekerjaan Anda.
Aspek "pekerjaan Anda" sangat penting dalam kernel linux (dan karenanya git) yang terkadang dipukul dengan tuntutan hukum hak cipta. Dengan menandatangani komit, Anda mengatakan bahwa Anda memiliki hak atas perangkat lunak — itu melacak asalnya. Mungkin Anda tidak memiliki akses ke sumber yang diklaim sebagai hak cipta dan klaim tidak berdasar. Mungkin saja perusahaan lupa bahwa Anda bekerja untuk mereka beberapa tahun yang lalu dan di bawah arahan mereka menambahkan bahan ke kernel, atau apa pun.
Ada beberapa perdebatan apakah setiap komit harus ditandatangani. Dari GPG menandatangani git commit? (kembali '09), Linus menulis:
Menandatangani setiap komit benar-benar bodoh. Itu hanya berarti bahwa Anda mengotomatiskannya, dan Anda membuat tanda tangan itu kurang berharga. Ini juga tidak menambah nilai nyata, karena cara rantai-git DAG dari kerja SHA1, Anda hanya perlu satu tanda tangan untuk membuat semua komitmen dapat dicapai dari yang satu secara efektif tercakup oleh yang itu. Jadi menandatangani setiap komit tidak ada gunanya.
Lebih banyak tentang pemikiran tentang masuk git dapat dibaca di sana juga.
Yang mengatakan, itu membuat jalan ke git.
Tampaknya ada konsensus mayoritas bahwa menandatangani komitmen tidak perlu, tetapi menandatangani tag sangat baik. Posting blog yang ditautkan di atas menunjukkan bahwa seseorang harus menandatangani semuanya. Seperti yang saya katakan, ada beberapa perdebatan tentang apakah setiap komit diperlukan atau tidak.
Kunci untuk debat "tandatangani setiap komitmen" mungkin ada hubungannya dengan alur kerja yang Anda gunakan. Kebanyakan orang membuat banyak komit di repo lokal mereka, dan kemudian mendorong set itu. Itu harus cukup untuk menandai koleksi akhir (dengan asumsi, yaitu, Anda memastikan bahwa semua perubahan sudah benar). Jika Anda bekerja di lingkungan tempat banyak komit tunggal bergerak, perbedaan antara tag dan komit menjadi kurang ... berbeda — dan komit penandatanganan mungkin menjadi lebih bermanfaat.