Saya telah melakukan banyak komit ke sebuah proyek di Github, namun saya menyadari bahwa saya belum mengatur email yang tepat dan nama lengkap komuter di komputer yang saat ini saya gunakan untuk membuat komit dan oleh karena itu para pengguna avatar dan alamat email tidak ada disana
Bagaimana saya bisa menulis ulang semua email dan nama pengguna yang dilakukan sebelumnya?
Jawaban:
Anda dapat menambahkan alias ini:
Untuk mengubah nama penulis:
atau email hanya untuk 10 komitmen terakhir:
Alias:
Sumber: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
sumber
git change-commits GIT_COMMITTER_EMAIL "[email protected]" "[email protected]"
untuk mengubah email committer.change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3; echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";read OK;if [ \"$OK\" = 'Y' ] ; then shift 3; git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ]; then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;}; f "
Cannot create a new backup. A previous backup already exists in refs/original/
Lihat di sini :
sumber
Jika Anda sudah mendorong beberapa komit Anda ke repositori publik, Anda tidak ingin melakukan ini, atau itu akan membuat versi alternatif dari sejarah master yang mungkin digunakan orang lain. "Jangan menyeberangi sungai ... Itu akan buruk ..."
Yang mengatakan, jika hanya komit yang telah Anda buat ke repositori lokal Anda, maka tentu saja perbaiki ini sebelum Anda mendorong ke server. Anda dapat menggunakan
git filter-branch
perintah dengan--commit-filter
opsi, sehingga hanya mengedit komit yang cocok dengan info yang salah, seperti ini:sumber
git update-ref -d refs/original/refs/heads/master
, lihat < stackoverflow.com/a/7654880/333403 >.A previous backup already exists in refs/original/
Jika demikian, jalankan kembali, dengan email baru, dan tambahkan-f
sebelum --commit-filter. Gunakan dengan kebijaksanaan Anda sendiri. Biasanya-f
hal yang berbahaya dilakukan tanpa sepengetahuan apa yang dilakukannya.Setelah menerapkan jawaban Olivier Verdier:
... untuk mendorong riwayat yang diubah pada penggunaan repositori asli:
Perintah di atas (perhatikan plus) memaksa penulisan ulang sejarah pada repo asli juga. Gunakan dengan hati-hati!
sumber
https://help.github.com/articles/changing-author-info/
ini benar-benar bekerja untuk saya. Setelah git push, pastikan untuk melihat pembaruan di portal web git. Jika komit masih belum ditautkan ke akun saya, ditampilkan gambar mini default di sebelah komit dan itu tidak tercermin pada bagan waktu kontribusi saya, buka url komit dan tambahkan .patch di akhir url, dan verifikasi nama dan email sudah benar.
sumber
Bagi mereka yang hanya ingin versi copy paste mudah (selain dari memperbarui email dan nama):
sumber
Mengingat penggunaan
git-filter-branch
yang tidak diinginkan , untuk melakukan hal yang sama di git-filter-repo (Anda mungkin perlu menginstal dulu denganpip install git-filter-repo
):Jika repositori asli, tanpa remote, Anda harus menambahkan
--force
untuk memaksa menulis ulang. (Anda mungkin ingin membuat cadangan dari repo Anda sebelum melakukan ini.)Jika Anda tidak ingin menyimpan referensi (akan ditampilkan dalam riwayat cabang Git GUI), Anda harus menambahkan
--replace-refs delete-no-add
.Untuk fitur lebih lanjut, lihat "Pemfilteran nama & email" .
PS Dicuri dan ditingkatkan dari https://stackoverflow.com/a/59591928/714907 .
sumber