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.
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