2014-09-02 16 views
6

php-src bir geliştirici olarak mevcut Geçenlerde aşağıdaki durumda kendimi bulmak taahhütRebase lokal

git fetch upstream 
git rebase -p upstream/master 
:
! [rejected]  master -> master (fetch first) 

Benim doğal tepki etkilenen dalı rebase ve birleştirme taahhüt korumaktırBu versiyon dalı ile sahibi arasında pek çok değişiklikler vardır çünkü orijinal birleştirme, önemsiz değildi taahhüt olduğuna dikkat etmek önemlidir; Böyle bir birleşmeyi çözmek için çaba harcıyor. Yukarıdaki Rebase işlemi yapmak

bir birleştirme çakışmaya neden ve tekrar çözmek zorunda; Bu zaten yaptığım neredeyse aynı iş.

Bunu yapmak için daha iyi bir yolu var mı? Yoksa bariz bir rebase seçeneğini unuttum mu?

+0

sen * rebase * var mı? Genelde ben de yeniden doğardım ama aynı zamanda mümkün olmadığı ve standart bir birleşme ile gittiğiniz durumlarda da bulundum. – musiKk

+0

Elbette, 'D', E 'yerine' D, E, M (z) 'yi basabilirim ama tarihini olabildiğince temiz tutmayı tercih ederim :) –

+1

Seni duyuyorum. Davanıza bağlı. Saat süren birleşmeler üzerinde çalıştım. Temiz bir tarihe olan sevgim sadece şu ana kadar gider. :) – musiKk

cevap

3

İdeal rerere ile "kaydedilen çözünürlüğü yeniden" olur: Bir iş akışı nispeten uzun ömürlü konu dalları kullanılmasında

, geliştirici bazen tekrar tekrar konu dalları kadar aynı anlaşmazlıkları çözmek gerekiyor "serbest bırakma" dalına birleştirilen veya gönderilen ve kabul edilen "akış".

Bu komut ilk el birleştirme ile ilgili çelişkili kendbirleş sonuçları ve ilgili el gidermek sonuçları kayıt ve bunların karşılık gelen kendbirleş sonuçlarına önceden kaydedilmiş elle çözünürlükleri uygulayarak bu işlemde geliştirici yardımcı olur.

Not: İlk birleştirme yapmadan önce

Maalesef bu özellik etkin olmalıdır Şu komutu etkinleştirmek için rerere.enabled yapılandırma değişkeni ayarlamak gerekir.

Bildiğim kadarıyla, bundan sonra böyle bir şey yapmak için kısayol yoktur. Ben küresel rerere sağlayan ve daha sonra birleştirme yineleme tavsiye: Gelecekte

git config --global rerere.enabled true 

, bu ayar size bir sürü zaman kazanmış olabilir!

+0

Ben * bence * bu tam olarak ihtiyacım olan şey olabilir, güzel bul! :) –

+2

Burada geriye dönük olarak etkinleştirmek için kısayol basitçe 'git config rerere.enabled true olmalıdır; git checkout y; git merge -s bizim --no-commit C; git okuma-ağacı -um HEAD D; git taahhüdü; git ödeme ana sayfası. – jthill

+0

Bu benim için basit görünmüyor, ama işe yaramıyorsa, bu cevap ya da ayrı bir tane için güzel bir ek olurdu :) –

İlgili konular