Bir commit'in yazar adını / e-postasını nasıl değiştirebilirim?

Bir commit'in yazar adını / e-postasını nasıl değiştirebilirim?

Git, yazılım geliştirme süreçlerinde kullanılan, hız odaklı, dağıtık çalışan bir sürüm kontrol ve kaynak kod yönetim sistemidir. Detaylı bilgi edinmek için vikipedi'yi kullanabilirsiniz.

Çözümlere geçmeden önce, tam olarak ne yapmak istediğinize karar verin:

  • Commit'i oluşturmadan önce yazar bilgilerini değiştirme
  • Bir commit'i oluşturduktan sonra yazar bilgisini değiştirme

Her iki duruma da bakalım.

Git Yazar Kimliğinizi Değiştirme

Git'te committer kimliğinizi değiştirmenin üç yolu vardır. Bu yöntemlerin tümü yalnızca gelecekteki commitlerinizi etkiler, geçmiş olanları değil!

Committer Adınızı ve E-postanızı Global Olarak Değiştirme

"Git config" komutunu --global bayrağıyla çalıştırabilirsiniz; bu, gelecekteki tüm commitlerinizin verdiğiniz bu bilgileri kullanmasını sağlayacaktır:

        $ git config --global user.name "Kenan Kartal"
        $ git config --global user.email "[email protected]"

Sadece Bir Repo İçin Committer Adınızı ve E-postanızı Değiştirme

Committer adınızı ve e-postanızı sadece bir repo için değiştirmek istiyorsanız, --global bayrağını atlayabilirsiniz. Bu, yapılandırmayı yalnızca bu repoda geçerli kılar:

        $ git config user.name "Kenan Kartal"
        $ git config user.email "[email protected]"

Yazar Bilgilerini Sadece Bir Sonraki İşlem İçin Değiştirme

Yazar bilgilerini sadece bir commit için değiştirmek istiyorsanız, --author bayrağı ile değiştirebilirsiniz:

        git commit --author="Kenan Kartal <[email protected]>"

Geçmiş Commit'lerin Yazar Bilgilerini Düzenleme

Geçmiş commitlerinizi düzenlemek, commit tarihini değiştiriyor.

Geçmiş commitlerinizin bilgisini tam olarak nasıl değiştirirsek değiştirelim, her zaman akılda tutulması gereken bir şey var: bunu yaparsak, commit tarihini üzerine yeniden yazıyoruz.

Bu hafife alınacak bir şey değil: bu süreçte yeni commit nesneleri yaratacaksınız, bu da birlikte çalıştığınız arkadaşlarınız için ciddi bir sorun haline gelebilir - çünkü orijinal commitlerin bir kısmı üzerinde yeni çalışmalar yapmış olabilirler.

Bu nedenle, commit geçmişinizi yeniden yazmadan önce iki kez düşünün!

Geçmiş commitlerinizi düzenlemenin üç temel yolu vardır:

Son Değişiklik İçin --amend Bayrağının Kullanılması

En son commit'inizi değiştirmek isterseniz, Git'de bunu yapmanın çok kolay bir yolu var:

        $ git commit --amend --author="Kenan Kartal <[email protected]>"

Bu, son commit'i "düzenlenmiş" sürümüyle değiştirir ve yanlış yazar bilgilerini düzeltir.

Etkileşimli Rebase Kullanımı

Etkileşimli Rebase, Git'teki İsviçre Çakısı aletidir: neredeyse her şeyi yapmanızı ve değiştirmenizi sağlar. Bununla birlikte, çok güçlü olduğundan kendinizi kolayca ayağınızdan vurabileceğiniz anlamına gelir. Dikkatli kullanın!

İlk adım son "iyi" commit'i tanımlamak ve hash'ini rebase komutuna eklemektir:

        $ git rebase -i -p 0ad14fa5

Düzenleyiciniz açılarak, değiştirmek istediğiniz tüm commit'leri "edit" anahtar kelimesiyle işaretlemenizi ister.

Etkileşimli Rebase

Git şimdi her commit'te size yol gösterecek ve istediğiniz gibi kalıplama şansı verecektir:

    Stopped at 5772b4bf2... Add images to about page
    You can amend the commit now, with 
    git commit --amend 
    Once you are satisfied with your changes, run 
    git rebase --continue

Şimdi işimiz, yazar bilgilerini düzeltmek ve daha sonra işaretlediğimiz tüm commit'leri düzenleyene kadar bir sonraki ilgili commit nesnesine devam etmek:

        $ git commit --amend --author="Kenan Kartal <[email protected]>" --no-edit 
        $ git rebase --continue

Git filter-branch Kullanma

Başka bir yol Git'in "filter-branch" komutunu kullanmaktır. Bir komut dosyasıyla (potansiyel olarak büyük) çok sayıda işi toplu olarak yapmanızı sağlar.

Deponuzda aşağıdaki örnek komut dosyasını çalıştırabilirsiniz (eski ve yeni e-posta ve ad için gerçek değerleri doldurarak):

        $ git filter-branch --env-filter 
        WRONG_EMAIL="[email protected]"
        NEW_NAME="Yeni Ad"
        NEW_EMAIL="[email protected]"
        if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
        then
        export GIT_COMMITTER_NAME="$NEW_NAME"
        export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
        fi
        if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
        then
        export GIT_AUTHOR_NAME="$NEW_NAME"
        export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
        fi
         --tag-name-filter cat -- --branches --tags

Bu yöntem, belirtilen yöntemlerle aynı uyarı için geçerlidir: geçmişi bu komutla yeniden yazıyorsunuz ve yol boyunca yeni commit nesneleri oluşturuyorsunuz!

Tercihen, bunu henüz yayınlanmamış / paylaşılmamış repolarda yapmalısınız. Başka bir durumda, çok dikkatli bir şekilde kullanmalısınız - ve sadece yan etkilerin farkındaysanız!

Kaynak: Git Tower


Yorumlar

There are no comments yet.

Mesaj alanı doldurulması zorunludur.
Markdown kopya kağıdı.


Haber bültenime abone olun

Aylık bültenime katılın ve yeni hikayeleri asla kaçırmayın.