Bazen "git pull --rebase" nin ne anlama geldiğine farklı bir bakış açısı sunmak istiyorum, çünkü bazen kayboluyor gibi görünüyor.
Subversion (veya CVS) kullandıysanız, "svn update" davranışına alışık olabilirsiniz. Değişikliklerin üst akışta yapıldığı için taahhütte değişiklikleriniz varsa ve taahhüt başarısız olursa, "svn update" (svn update). Subversion, yukarı akış değişikliklerini sizinkiyle birleştirerek, muhtemelen çatışmalara neden olarak ilerler.
Subversion'ın az önce yaptığı şey aslında "çekin - rebase" idi. Yerel değişikliklerinizi daha yeni sürüme göre yeniden formüle etme işlemi, bunun "yeniden temellendirme" bölümüdür. Başarısız tamamlama girişiminden önce "svn diff" işlemini gerçekleştirdiyseniz ve elde edilen farkı daha sonra "svn diff" çıktısıyla karşılaştırdıysanız, iki fark arasındaki fark yeniden bastırma işleminin yaptığıdır.
Bu durumda Git ve Subversion arasındaki en büyük fark, Subversion'da "sizin" değişikliklerinizin yalnızca çalışma kopyanızdaki taahhütlü olmayan değişiklikler olarak mevcut olması, Git'te ise yerel olarak gerçek taahhütlerinizin olmasıdır. Başka bir deyişle, Git'te geçmişi çatalladınız; geçmişiniz ve yukarı akış tarihiniz birbirinden ayrıldı, ancak ortak bir atalarınız var.
Benim düşünceme göre, yerel şubenizin sadece yukarı akış dalını yansıtması ve üzerinde sürekli gelişim yapması normal durumda, yapılacak doğru şey her zaman "- rebase" dir, çünkü anlamsal olarak gerçekte yaptığınız şey budur . Siz ve diğerleri, bir dalın amaçlanan doğrusal geçmişine saldırıyorsunuz. Denemenizden önce birisinin biraz itmeye başlamış olması önemsizdir ve bu tür zamanlama kazalarının her birinin tarihte birleşmelerle sonuçlanması için karşı üretken görünmektedir.
Herhangi bir nedenden ötürü bir şeyin şube olması gerektiğini düşünüyorsanız, bence bu farklı bir kaygıdır. Ancak değişikliklerinizi birleştirme biçiminde temsil etmek için özel ve aktif bir arzunuz yoksa, varsayılan davranış, bence, "git pull --rebase" olmalıdır.
Lütfen projenizin geçmişini gözlemlemesi ve anlaması gereken diğer insanları düşünün. Tarihin her yerde yüzlerce birleşmeyle dolmasını mı istiyorsunuz, yoksa sadece kasıtlı ıraksak gelişme çabalarının gerçek birleşimlerini temsil eden seçkin birkaç birleşmeyi mi istiyorsunuz?