Bir taahhüt mesajında yanlış bir şey yazmışım.
Mesajı nasıl değiştirebilirim? Taahhüt henüz itilmedi.
git commit --amend
editörünüzü açacak ve en son commit'in commit mesajını değiştirmenize izin verecektir. Ek olarak, commit mesajını doğrudan komut satırında şu şekilde ayarlayabilirsiniz:
git commit --amend -m "New commit message"
...ancak bu, çok satırlı taahhüt mesajlarının veya küçük düzeltmelerin girilmesini daha zahmetli hale getirebilir.
Bunu yapmadan önce herhangi bir çalışma kopyası değişikliğiniz aşamalı olmadığından emin olun, aksi takdirde onlar da işlenecektir. (Staged olmayan değişiklikler işlenmeyecektir.)
Eğer commit'inizi uzak şubenize zaten ittiyseniz, o zaman commit'i itmeye zorlamanız gerekir ile:
git push <remote> <branch> --force
# Or
git push <remote> <branch> -f
Uyarı: force-pushing uzak dalın üzerine yerel dalınızın durumunu yazacaktır. Uzak dalda yerel dalınızda bulunmayan taahhütler varsa, bu taahhütleri kaybedersiniz.
Uyarı: başkalarıyla paylaştığınız taahhütleri değiştirme konusunda dikkatli olun. Taahhütleri değiştirmek, esasen onları farklı SHA kimliklerine sahip olacak şekilde yeniden yazar, bu da başkalarının yeniden yazdığınız eski taahhütlerin kopyalarına sahip olması durumunda bir sorun teşkil eder. Eski commit'in bir kopyasına sahip olan herkesin çalışmalarını yeni yazdığınız commit ile senkronize etmesi gerekecektir, bu da bazen zor olabilir, bu nedenle paylaşılan commit geçmişini yeniden yazmaya çalışırken başkalarıyla koordinasyon sağladığınızdan emin olun veya paylaşılan commit'leri tamamen yeniden yazmaktan kaçının.
Başka bir seçenek de etkileşimli yeniden tabanı kullanmaktır. Bu, en son mesaj olmasa bile güncellemek istediğiniz herhangi bir mesajı düzenlemenize olanak tanır.
Git squash yapmak için aşağıdaki adımları izleyin:
// X is the number of commits to the last commit you want to be able to edit
git rebase -i HEAD~X
Taahhütlerinizi ezdikten sonra - mesajı düzenlemek için e/r
yi seçin:
git rebase -i HEAD~Xkomutunu kullandığınızda
Xkomutundan **daha fazla** komut olabilir. Git, son
X` komutundaki tüm komutları "toplayacaktır" ve bu aralık arasında bir yerde bir birleştirme varsa, tüm komutları da göreceksiniz, bu nedenle sonuç X+<birleştirmelerdeki komut sayısı> olacaktır.
Bunu tek bir daldan daha fazlası için yapmanız gerekiyorsa ve içeriği değiştirirken çakışmalarla karşılaşabilirsiniz, git rerere
ayarlayın ve Git'in bu çakışmaları sizin için otomatik olarak çözmesine izin verin.
Düzeltmek istediğiniz commit en sonuncusu değilse:
git rebase --interactive $parent_of_flawed_commit
Birkaç hatalı işlemi düzeltmek istiyorsanız, bunlardan en eski olanının üstünü iletin.
Verdiğiniz komuttan itibaren tüm komutların listesini içeren bir editör gelecektir.
pick
i reword
(veya Git'in eski sürümlerinde edit
) olarak değiştirin.Yazmak istediğiniz her commit için Git sizi editörünüze geri götürecektir. Düzenlemek istediğiniz her commit için Git sizi kabuğa bırakır. Eğer kabuktaysanız:
git commit --amend
git rebase --continue
Bu sıralamanın çoğu, siz ilerledikçe çeşitli komutların çıktılarıyla size açıklanacaktır. Çok kolaydır; ezberlemenize gerek yoktur - sadece git rebase --interactive
komutunun ne kadar zaman önce olursa olsun düzeltme yapmanıza izin verdiğini hatırlayın.
Daha önce ittiğiniz taahhütleri değiştirmek istemeyeceğinizi unutmayın. Ya da belki de istersiniz, ancak bu durumda taahhütlerinizi çekmiş ve üzerinde çalışmış olabilecek herkesle iletişim kurmak için büyük özen göstermeniz gerekecektir. Birisi yayınlanmış bir dala bir rebase veya reset ittikten sonra nasıl kurtarabilirim/yeniden senkronize edebilirim?