Saya ingin mengubah nama, nama keluarga dan email saya di semua komitmen saya, apakah itu mungkin?
git
git-filter-branch
Joshua
sumber
sumber
Jawaban:
Gunakan
git-filter-branch
.Ini hanya memengaruhi penulis, bukan pelaku (yang untuk sebagian besar komitmen akan sama dengan penulis). Jika Anda ingin menulis ulang juga, setel variabel
GIT_COMMITTER_NAME
danGIT_COMMITTER_EMAIL
.The peringatan standar tentang menulis ulang sejarah berlaku; lakukan hanya untuk sejarah yang belum dibagikan.
Pembaruan Juni 2018
Manual ini sekarang menyertakan solusi, menggunakan
--env-filter
, dalam contohnya: https://git-scm.com/docs/git-filter-branch#_examples :sumber
msysgit
, Anda masih memiliki akses kebash
. Kalau tidak, saya tidak tahu.Untuk menulis ulang penulis dan komiter di semua komit yang dipilih:
sumber
git push --all origin --force
Jika tidak ada penulis lain, Anda dapat melakukan:
sumber
Simpan script di bawah sebagai contoh
~/.bin/git-replace-author
dan jalankan dengan menggunakan, contoh:Tanpa argumen, itu memperbarui semua komit dengan nama Anda untuk menggunakan alamat email Anda saat ini sesuai dengan konfigurasi Git.
Raw (untuk mengunduh)
sumber
~/.bin/
perlu berada di dalam pengguna$PATH
dan kebutuhan file yang akan dieksekusi, jadi lari:chmod +x ~/.bin/git-replace-author
.Hanya jika Anda belum memaksakan komitmen Anda pada dunia. Bijak lainnya, orang lain memiliki nama lama Anda di repo mereka yang tidak mungkin Anda dapat mengubah semua orang.
sumber
Dengan Git 2.24 (Q4 2019),
git filter-branch
(dan BFG) tidak digunakan lagi .Persamaannya adalah, using
newren/git-filter-repo
, dan contoh bagiannya :dengan
my-mailmap
:Itu akan menggantikan nama penulis dan email dari setiap komit yang dilakukan oleh siapa pun dengan
<[email protected]>
Lihat
git shortlog
bagian penulis pemetaan untuk sintaks yang tepatsumber