2017-01-24 67 views
6

uygulamasına itmenin yolu nedir? Git'te, master ve myFeatureBranch (masterdayken IDEA'nın yeni şubesi aracılığıyla oluşturduğum) iki şubem var. MyFeatureBranch'ı oluşturduğumdan beri, diğer takım üyeleri usta için birkaç değişiklik yaptı. Bu değişiklikleri getirmek istiyorum ve birleştirme çatışmalarına sahip olduğumun farkındayım. Bununla uğraşmak nasıl"Rebase ile Checkout" işlemini yapmanın ve sonra da birleştirilmiş dosyaları Intellij IDEA

Benim genel bir fikir:

  • Ben ustadan kaydedilmesini tüm almak ve herhangi bir birleştirme ile anlaşma
  • tüm itmek çatışan benim dalına uygulamak uzaktan dalına birleştirilmiş dosyalar dahil bu değişikliklerin, bir
  • hiçbir yinelenen benim uzaktan dal üzerinde taahhüt vardır

Intellij IDEA 2016 added some new features Rebase ile Ödeme dahil. Duyurularından: Ödeme ve ardından Rebase: Eğer iki işlemleri yaparken fazladan dosyalar senkronizasyonu ve derleme üzerinde zaman harcamak istemiyorsanız

Rebase eylem ile Ödeme yararlıdır.

İstediğim gibi geliyor. Zaten masterdayım, bu yüzden IDEA penceremin sağ alt tarafındaki şube seçiciyi tıklıyorum. Yerel şubelerime gidiyorum ve "Rebase ile Checkout" u seçiyorum.

Intellij IDEA Checkout with Rebase

Bunu yaptıktan sonra, benim birleştirme çakışmaları hakkında söylenene. "Birleştir" düğmesini seçip bunları manuel olarak çözüyorum.

Intellij IDEA Merge Conflict

Ben, benim Rebase başarılı bir onay olduğunu alırım sonra:

Intellij IDEA Rebase Successful

Ve orada hiçbir beklemedeki değişiklikler:

Intellij IDEA No Pending Changes

Herşey işe yaramış gibi görünüyor. Şimdi, birleştirilmiş sınıflarım da dahil olmak üzere, uzak şubeme her şeyi itmek istiyorum. Bu yüzden menü çubuğuna gidip VCS -> Git -> Push seçeneğini seçiyorum. Bunu yaparken Ama bir hata benim itme reddedildiğini söyleyerek ve birleştirme gerektiğini olsun: Ben tavsiyesine uyup seçmeye karar

Push of current branch <code>myFeatureBranch</code> was rejected. Remote changes need to be merged before pushing. In this case **merge is highly recommended**, because there are non-pushed merge commits. Rebasing them can lead to problems.

"Birleştirme". Ancak, bu beni hemen birleştirme çatışmasına getirdi. Ben bu işe devam ve tekrar iterek deneyin

Intellij IDEA Merge Conflict

, başarılı, ama birleştirme ile birlikte iki adet rüzgar.

Bu "Rebase with Rebase" ile yanlış bir şekilde yapıyorum ve birleştirilmiş dosyalarımı itiyor muyum?

Ayrıca, Bunu Terminal'dan yapmak istemiyorum. Bu, bazı geliştiriciler için daha kolay olabilir, ancak tamamen IDEA GUI aracılığıyla nasıl yapılacağını öğrenmek istiyorum (QA'mız var ve geliştiricilerimiz kadar teknik olmayan diğer kullanıcılar var ve bunları kullanmak zorunda değiller. komut satırı ve onlar için en iyi yolu bilmek istiyorum).

+0

Ne alabilirim yardımcı olur? –

+0

@ GrzegorzGórkiewicz Süreçte hangi noktada denememi istersiniz? Ve bu komut satırından yapmam gereken bir şey mi? Sonunda söylediğim gibi, bütün bu süreci Intellij IDEA GUI'den nasıl yapacağımızı öğrenmek isterdim, ancak komut satırı maddeleri ne yapılacağını belirledikçe sorunları teşhis etmeye yardım ederse, bu iyi olur. – Thunderforge

+0

Başlangıç ​​noktasında, sorun oluşmadan önce. Ama yine de komut satırını kullanır ve bunu istemezsiniz, çünkü bazı insanlar “teknik olmayan” dır:> –

cevap

0

Ayrıca rebase yaptığımda böyle bir sorunla karşılaştım. Bir çok anlaşmazlık çözüldü ve sonunda sorun var. Tabii ki, birleştirme benim açımdan iyi bir çözüm değil, çünkü sonuç çok güzel görünmeyecek.

Yeniden oluşturmadan önce, yeniden oluşturulacak olan başlangıç ​​dalınızı yeniden adlandırın ve sonra da eski başlangıç ​​dalı adını kullanın. Ya da sadece itme değişikliklerini yeni menşe dalına indirdikten sonra.

Farklı dallara geçmek için ana nokta, aynı değil. Bu sorunu çözmek için bana yardımcı olur. Örneğin

,

feature  - - - - 
      /
dev - - - . - - - - - - . - - 

haline Will:

update-feature    - - - - 
         /
dev - - - . - - - - - - . - - - - - 

Ve sorunsuz yapılacaktır. Eğer `git değişiklikleri stash` eğer bunu umut

` git --hard` sizin `myFeatureBranch` sıfırlamak ve tekrar yapmak deneyin, :)