Geçerli şubenin, birleştirilen değişikliklerin üstündeki değişikliklerini nasıl yeniden temellendirirsiniz?


144

Tamam. Eğer bir daldayım (söyle working) ve başka bir daldan (söyle master) değişiklikleri birleştirmek istiyorsam , o zaman dalda git-merge masteriken komutu çalıştırırım workingve değişiklikler geçmişe hiç basmadan birleştirilir. Eğer koşarsam git-rebase master, o zaman değişiklikler değişiklikleri masterşubemin üstüne koymak için yeniden temel alınır working. Peki ya değişikliklerden bir araya gelmek masterama değişikliklerimi workingen üstte olmak için geri çevirmek istersem ? Bunu nasıl yaparım? Bu yapılabilir mi?

Ben çalıştırabilir git-rebase workingbenim üzerinde masterde üstünde benim değişiklikleri koymak şube masterşube, ama benim o yapabilmek istiyorum workingşube ve ben nasıl hiçbir fikrim yok. Yapabileceğim en yakın şey, yeni bir dal oluşturmak masterve bunun üzerine workingdeğişiklikleri yeniden oluşturmaktır, ancak daha sonra dalı değiştirmek yerine yeni bir dalım olacaktı working.

Yanıtlar:


255

rebaseGeriye ne yapacaksın. git rebase masteristediğini yapar - mevcut daldaki değişiklikleri alır (master'dan sapması nedeniyle) ve bunları tekrar oynatır master, ardından mevcut dalın başını yeni tarihin başı olarak ayarlar. O değil değişiklikleri tekrar masterakım dalı üstünde.


3
@Jonathan harika. Bu biraz zor bir konudur. Bu arada, git rebase workinghareket edeceğini master'ın değişiklikleri (bu noktadan sonra workingüstünde olmak üzere kapalı kollara) workingşube - ama bu yapmak çok mantıklı bir şey değil master:)
Hobbs

66

Buna bakmanın bir başka yolu da şöyle düşünmektir git rebase master:

Geçerli dalı Rebase üstünde master

Burada, ' master' olduğunu memba şube ve rebase sırasında, niye, açıklamak oursve theirsters .


Bu aynı zamanda YEREL ve UZAKTAN neden ters çevrildiğini de açıklar. Teşekkürler.
AVIDeveloper

@AVIDeveloper LOCAL ve REMOTE üzerinde ayrıca stackoverflow.com/a/3052118/6309
VonC

5
@@ VonC: Teşekkürler. Evet, öğleden sonra kendime mırıldanarak "REMOTE benim şubem .. LOCAL benim değil", hepsi battı. Dürüst olmak gerekirse, REMOTE / LOCAL / yerine şube adlarını görmeyi tercih ederdim. bizimki / onlarınki / madeni. git difftool'In korkunç sol / sağ ile ilgili düşüncelerim aynı . Biraz konu dışı, ama difftoolgit-meld'e bağlı kalıyorum ve 'working-dir', 'stash @ {0}' gibi isimlerin tadını çıkarıyorum.
AVIDeveloper

1
@VonC: Bunu yaptıktan sonra nasıl olabilir git checkout branch_to_update git rebase master?
JavaSa

1
@JavaSa Rebase düzgün bir şekilde tamamlanmadığı sürece bu garip mi? Daha fazla ayrıntı içeren ayrı bir soru sormanız gerekebilir.
VonC
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.