Birleştirme çakışmalarını çözümleme

Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015

Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015

Bir dalı başka bir dalla birleştirin, bir dalda yapılan dosya değişiklikleri, diğer dalda yapılan değişikliklerle çakışır. Git, birleştirilen dosyaların nasıl olması gerektiğini belirlemek için depoda yer alan geçmişi kullanarak bu değişiklikleri çözmeye çalışır. Değişikliklerin nasıl birleştirilecek açık değilse Git birleştirmeyi durdurarak hangi dosyaların çakışması olduğunu söyler.

Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Birleştirme çakışmalarını anlama
  • Birleştirme çakışmalarını çözümleme

Birleştirme çakışmalarını anlama

Aşağıdaki görüntüde, Git'te değişikliklerin çakışması ile ilgili çok temel bir örnek ve bir örnek yer aldı. Hem ana hem de hata düzeltmesi dalı, aynı kaynak kodu satırlarında güncelleştirmeler sağlar.

Main ve bugfix dallarında çakışan değişiklikler var

Hata düzeltme dallarını main ile birleştirmeye çalışsanız Git, birleştirilmiş sürümde hangi değişikliklerin kullanılamayacaklarını belirleyemez. Değişiklikleri ana dalda, hata düzeltme dalda veya iki birleşiminde tutmak istiyor olabilir. Bu çakışmayı, iki dal arasındaki çakışan değişiklikleri uzlaştıran ana dalda birleştirme işlemesi ile çözebilirsiniz.

İki dal arasındaki çakışmayı çözmek için birleştirme işlemesi oluşturma

En yaygın birleştirme çakışması durumu, güncelleştirmeleri uzak bir daldan yerel dalınıza (örneğin, yerel dalınıza) origin/bugfixbugfix çekmenizdir. Bu çakışmaları aynı şekilde çözebilirsiniz. Yerel dalda değişiklikleri mu mutabakata varan bir birleştirme işlemesi oluşturun ve birleştirmeyi tamamlar.

Git birleştirme çakışmalarını önlemek için ne yapar?

Git, depoda yapılan tüm değişikliklerin geçmişini tutar. Git, değişiklikleri sıralaya ve birleştirmeyi otomatik olarak çözümleyene kadar işlemeler arasındaki ilişkilerin yanı sıra bu geçmişi de kullanır. Çakışmalar yalnızca geçmişinize göre aynı dosyalarda aynı satırlarda yapılan değişikliklerin nasıl birleştirilecekleri net olarak belli değilken oluşur.

Birleştirme çakışmalarını önleme

Git, dosya içeriğinin işlemeler arasında önemli ölçüde değişmeme şartıyla çoğu durumda dosya değişikliklerini otomatik olarak birleştirmede çok iyidir. Dalınız ana dalın çok arkasında yer aldısa, çekme isteği açmadan önce dalları yeniden temel alın. Yeniden temel dallar çakışma olmadan ana dalınıza birleşecektir.

Birleştirme çakışmalarını çözümleme

Not

Visual Studio 2019 sürüm 16.8 veya sonraki bir sürümü kullanıyorsanız Git sürüm denetimi deneyimini deneyin. Bu Yan yana karşılaştırma sayfasında Git deneyiminin Takım Gezgini karşılaştırması hakkında daha fazla bilgi edinebilirsiniz.

  1. Değişiklikleri çekin veya iki dalı birleştirmeyi denerken birleştirme çakışmaları size bildirilecek.

  2. Çakışma bildirimi görüntülenir. Dosya çakışmalarını çözümlemeye başlamak için Çakışmalar bağlantısına tıklayın.

    Değişiklik çekme işlemiyle birleştirme çakışması olduğunda istem

  3. Bu, çakışmaları olan dosyaların listesini getirir. Bir dosya seçmek, kaynağından birleştirerek kaynak dalda yaptığınız değişiklikleri Kaynağı Al düğmesiyle kabul etme veya Birleştirme yaptığınız dalda Hedefi Tut seçeneğini kullanarak değişiklikleri kabul etmenizi sağlar. Birleştir'i seçerek değişiklikleri el ile birleştirebilirve ardından değişiklikleri doğrudan Git ayarlarınıza belirtilen birleştirme aracına girebilirsiniz.

  4. Tamamen uzak ve yerel değişiklikler arasında seçim yapmak için değiştirilen satırların yanındaki onay kutularını kullanın veya sonuçları fark görünümünde Kaynak ve Hedef düzenleyicisinin altındaki Sonuç düzenleyicisinde doğrudan düzenleyin.

  5. Değişiklik yapma işlemi tamam olduğunda Birleştirmeyi Kabul Et'e tıklayın. Çakışan tüm dosyalar için bunu tekrarlayın.

  6. Değişiklik görünümü'Takım Gezgini açın ve birleştirme işlemesini oluşturmak ve çakışmayı çözmek için değişiklikleri işin.

    Visual Studio'de Birleştirme Çakışmalarını Çözümleme

    Çakışan commit'leri ve ortak geçmiş arasındaki farkları, aynı Visual Studio aracında yer alan seçeneklerle karşılaştırın.

    VSMergeTool karşılaştırma seçenekleri

Sonraki adımlar