Git Log'unda Yazar ve Email Değişikliği

Bazen birden fazla git reposunda çalışırken şirket repoları ve kişisel repolar karışıyor. Yada geliştirme ortamını yeni kurdunuz ama aşağıdaki ayarları yapmayı unuttunuz.

git config --global user.name "DevOps TR"
git config --global user.email mail-address@devopstr.com

Bu durumda bütün commit kullanıcıları işletim sistemine giriş yaptığınız kullanıcı adı ile veya hatalı olan diğer mail adresiniz ile gözükecek.

Aşağıdaki basit git komutu bu durum olduktan sonra düzeltmenizi sağlıyor.

git filter-branch --commit-filter '
    if [ "$GIT\_AUTHOR\_EMAIL" = "wrong@mail.com" ];
    then
        GIT\_AUTHOR\_NAME="DevOps TR";
        GIT\_AUTHOR\_EMAIL="correct@devopstr.com";
        git commit-tree "$@";
    else
        git commit-tree "$@";
    fi' HEAD

Yapılan iş çok basit; git filter-branch komutu git tarihçesini baştan yazmanızı sağlayan bir komut. Bu komut sayesinde hatalı mail adresi içeren commit mesajlarını bulup, o mesajlar için düzgün author bilgisini set edip git commit-tree komutu ile modifiye edilmiş yeni commit object yaratılmasını sağlamış oluyoruz.