Git Pull vs Git Rebase


127

Git'te bir noob'um ve git pullvs arasındaki farkı öğrenmeye çalışıyorum git rebase. Her ikisinin de aynı amaca hizmet ettiğini düşündüğümden biri hangi seçeneğin ne zaman kullanılacağına bir örnek verebilir mi?


Evet yaptım. Çekme ve geri tepme arasındaki fark, çekmenin birleştirme yapmasıdır. Yani sorunuzun cevabı yapıştırdığım bağlantıda.
Thibault D.

1
@ user4943236 1) Sorunuza kimin olumsuz oy verdiğini bile bilmiyorsunuz, sebepsiz yere insanları suçlamayın 2) benim olumsuz oyum olsaydı onu kaldırmazdım çünkü okuyarak cevap bulmak çok kolay dokümantasyon
Tim


Bu sorunuzu yanıtlıyor mu? git çekme VS git getir Vs git rebase
Shiwangini

Yanıtlar:


131

git pullve git rebasebirbirinin yerine geçemezler, ancak birbirleriyle yakından bağlantılıdırlar.

git pullgeçerli şubenin en son değişikliklerini uzak bir yerden alır ve bu değişiklikleri şubenin yerel kopyasına uygular. Genellikle bu birleştirme yoluyla yapılır, yani yerel değişiklikler uzaktaki değişikliklerle birleştirilir. Yani git pullbenzer git fetch & git merge.

Yeniden oluşturma, birleştirmeye bir alternatiftir. İki dalı birleştiren yeni bir commit oluşturmak yerine, şubelerden birinin taahhütlerini diğerinin üzerine taşır.

Merge ( git pull --rebase) yerine rebase kullanarak çekebilirsiniz . Yaptığınız yerel değişiklikler, uzaktan değişikliklerle birleştirilmek yerine, uzak değişikliklerin üzerine yeniden yansıtılacaktır.

Atlassian, birleştirme ve yeniden satışa ilişkin bazı mükemmel belgelere sahiptir .


52

git-pull - Başka bir depodan veya yerel bir şube GIT PULL'dan alın ve entegre edin

Temel olarak uzak şubeyi yerel bölgenize çekiyorsunuz, örneğin:

git pull origin master

Ana dalı yerel deponuza çekecek

git-rebase - Güncellenmiş yukarı akış kafası GIT REBASE'e ileri-port yerel taahhütler

Bu, yerel değişikliklerinizi diğer kullanıcılar tarafından uzaktan yapılan değişikliklerin üzerine yerleştiriyor. Örneğin:

  • Yerel şubenizde bazı değişiklikler yaptınız, örneğin: SOME-FEATURE
  • Bu arada arkadaşınız diğer özellikler üzerinde çalışıyordu ve şubesini ustalıkla birleştirdi

Şimdi yerel şubenizde onun ve sizin değişikliklerinizi görmek istiyorsunuz. Öyleyse masterşubeyi kontrol edersiniz :

git checkout master

o zaman çekebilirsin:

git pull origin master

ve sonra şubenize gidersiniz:

git checkout SOME-FEATURE

ve masterondan en son değişiklikleri almak için yeniden ödeme yapabilir ve şube taahhütlerinizi en üste koyabilirsiniz:

git rebase master

Umarım şimdi sizin için biraz daha nettir.


15
Master ödünç vermenize gerek yok. Dalınızda kalın ve yapın: git fetcho zaman git rebase origin/master.
Antoine Martin

1
Yerel ana makineyi kontrol ederek ve ardından orijinal ana birimi çekerek yerel ana makinenizi de güncelleyecektir. Bu, kullanılması gereken en iyi uygulamalardan biridir
Ashwani

21

Kısaca :

-> Git Merge: Sizin ve uzaktaki değişikliklerinizi basitçe birleştirecek ve bu başka bir kayıt geçmişi kaydı oluşturacaktır.

-> Git Rebase: Değişikliklerinizi tüm yeni uzaktan değişikliklerin üzerine koyacak ve commit geçmişini yeniden yazacak, böylece commit geçmişiniz git merge'den çok daha temiz olacaktır. Rebase, yıkıcı bir işlemdir. Bu, doğru şekilde uygulamazsanız, kararlı çalışmanızı kaybedebileceğiniz ve / veya diğer geliştiricinin depolarının tutarlılığını bozabileceğiniz anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.