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

Azure DevOps Hizmetleri | Azure DevOps Server | Azure DevOps Server 2022

Visual Studio 2019 | Visual Studio 2022

Tip

Azure DevOps görevlerine yardımcı olması için yapay zekayı kullanabilirsiniz. Başlamak için bkz. Azure DevOps MCP Sunucusu ile yapay zeka yardımlarını etkinleştirme .

Birleştirdiğinizde veya yeniden temel aldığınızda Git'e, bir dalda yapılan değişiklikleri başka bir dalda yapılan değişikliklerle tümleştirmesini söylemiş olursunuz. Git genellikle yardımınız olmadan birleştirmeyi tamamlar veya otomatik olarak yeniden temel alır. Ancak Git, bir dalda yapılan bir değişikliğin başka bir dalda yapılan bir değişiklikle çakıştığını fark ederse, çakışmayı çözmenizi ister. Birleştirilmiş dallar aynı dosya satırını farklı düzenlediğinde veya bir dal bir dosyayı değiştirdiğinde ve başka bir dal sildiğinde birleştirme çakışması oluşabilir. Birleştirme çakışmalarını çözümleme işlemi hem Git birleştirme hem de yeniden temellendirme için geçerlidir.

Visual Studio'da veya komut satırını ve herhangi bir metin düzenleyicisini kullanarak birleştirme çakışmalarını çözebilirsiniz.

Git iş akışına genel bakış için bkz. Azure Repos Git öğreticisi.

Önkoşullar

Kategori Gereksinimler
Proje erişimi Bir projenin üyesi.
İzinler - Özel projelerde kodu görüntüleme: En azından Temel erişim.
- Özel projelerde kod kopyalama veya koda katkıda bulunma: Katkıda Bulunanlar güvenlik grubunun üyesi veya projedeki ilgili izinler.
- Dal veya depo izinlerini ayarlayın: Dal veya depo izinlerini yönetin .
- Dal ilkelerini, durum denetimlerini ayarlayın veya varsayılan dalı değiştirin: Depo veya dal için ilke düzenleme izni veya Project Administrators güvenlik grubu üyeliği.
- Bir depoyu içeri aktarma: Proje Yöneticileri güvenlik grubunun üyesi veya Git proje düzeyinde Depo oluşturma izni İzin Ver olarak ayarlanır. Daha fazla bilgi için bkz. Git deposu izinlerini ayarlama.
Hizmetler Depolar etkinleştirildi.
Tools Optional. Komutları kullanın az repos : Azure DevOps CLI.
Kategori Gereksinimler
Proje erişimi Bir projenin üyesi.
İzinler - Kodu görüntüle: En azından Temel erişim.
- Kodu kopyalama veya koda katkıda bulunma: Katkıda Bulunanlar güvenlik grubunun üyesi veya projedeki ilgili izinler.
Hizmetler Depolar etkinleştirildi.

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

Git birleştirme veya yeniden konumlandırma, bir kaynak daldan gelen işlemeleri mevcut yerel dalınıza (hedef dal) tümleştirir. Git birleştirme , bir ileri sarma veya ileri sarma olmayan birleştirme gerçekleştirir. Hızlı-ileri olmayan birleştirme, aynı zamanda üç yönlü birleştirme veya gerçek birleştirme olarak da bilinir. Git rebase birleştirmenin başka bir türüdür. Bu birleştirme türleri aşağıdaki diyagramda gösterilmiştir.

Git birleştirme ve Git yeniden temellendirme kullanılırken öncesi ve sonrası taahhütleri gösteren diyagram.

Git birleştirme için, eğer hedef dalın ucu kaynak dalın içerisinde yer alıyorsa, varsayılan birleştirme türü hızlı iletme olacaktır. Aksi takdirde, varsayılan birleştirme türü hızlı olmayan bir birleştirme olur.

Git, hedef dalın ucu kaynak daldan ayrıldığında hızlı ileriye doğru bir birleştirme uygulamayacağı için, ileri sarma birleştirmesi hiçbir zaman birleştirme çakışmasına neden olamaz. Varsayılan olarak, Git mümkün olduğunda hızlı bir birleştirme kullanır. Örneğin, Git, yalnızca uzak karşılık gelen dalından çektiğinizde güncellediğiniz yerel dalda hızlı ileri birleştirme uygular.

Hızlı olmayan bir birleştirme, kaynak dal değişikliklerini hedef dal değişiklikleriyle tümleştiren yeni bir hedef dal "birleştirme işlemesi" oluşturur. Geçerli değişiklikler, her iki dal için de ortak olan son işlemeden sonra yapılan değişikliklerdir. Yukarıdaki diyagramda işleme C, her iki daldaki son yaygın işlemedir. Herhangi bir kaynak dal değişikliği herhangi bir hedef dal değişikliğiyle çakışırsa Git, birleştirme çakışmasını çözmenizi ister. Birleştirme işlemesi (L) tümleşik kaynak dalını ve hedef dal değişikliklerini içerir. Kaynak ve hedef dal ipuçları (K ve E), birleştirme işlemesinin ana öğeleridir. Dalınızın işleme geçmişinde birleştirme işlemesi, birleştirme işlemi için yararlı bir işaretleyicidir ve hangi dalların birleştirildiğini açıkça gösterir.

Git rebase , hedef dalın işleme geçmişini yeniden sorgular, böylece tüm kaynak dal işlemelerini ve ardından son ortak işlemeden bu yana tüm hedef dal işlemelerini içerir. Yukarıdaki diyagramda işleme C, her iki daldaki son yaygın işlemedir. Bunu görüntülemenin başka bir yolu, yeniden temelin kaynak dal geçmişinin üzerinde hedef dalınızdaki değişiklikleri yeniden oynatmasıdır. Herhangi bir kaynak dal değişikliği herhangi bir hedef dal değişikliğiyle çakışırsa Git, birleştirme çakışmasını çözmenizi ister. Hızlı birleştirme de olduğu gibi, rebase bir birleştirme kaydı oluşturmaz. Önemli bir şekilde, yeniden yazdırma, diğer birleştirme stratejileri için geçerli olmayan mevcut hedef dal taahhütlerinin sırasını değiştirir. Yukarıdaki diyagramda commit K', K ile aynı değişiklikleri içerir, ancak C yerine E işlemesine geri bağlandığı için yeni bir işleme kimliğine sahiptir.

Git birleştirme ve yeniden temel oluşturma yalnızca hedef dalı değiştirir; kaynak dal değişmeden kalır. Bir veya daha fazla birleştirme çakışması ile karşılaştığınızda, birleştirmeyi tamamlamak veya yeniden temel almak için bunları çözümlemeniz gerekir. Veya birleştirme/yeniden temel oluşturma işlemini iptal edebilir ve hedef dalı önceki durumuna döndürebilirsiniz.

Birleştirme seçenekleri ve stratejileri hakkında daha fazla bilgi için Bkz. Git başvuru kılavuzu ve Git birleştirme stratejileri.

Birleştirme çakışmaları ne zaman çözülür?

Git birleştirme ve Git yeniden temeli Git iş akışında yaygın olarak kullanılır. Yerel bir özellik veya hata düzeltme dalı üzerinde çalışırken yaygın olarak şunlar uygulanır:

  1. main yerel dalınızı uzak karşılık gelen dalıyla periyodik olarak çekerek uzak taahhütleri almak ve birleştirmek suretiyle güncel tutun.
  2. Rebase veya birleştirme işlemi yaparak yerel main dal güncellemelerini yerel özellik dalınıza entegre edin.
  3. Yerel özellik dalındaki çalışmanızı ilgili uzak dala göndererek yedekleyin.
  4. Özelliği tamamladığınızda, uzak özellik dalınızı uzak ana dala birleştirmek için bir çekme isteği oluşturun.

Uzak değişiklikleri yerel deponuzla sık sık tümleştirerek, başkaları tarafından yapılan son çalışmaların farkında olabilir ve ortaya çıkan birleştirme çakışmalarını hemen çözebilirsiniz.

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

Birleştirme çakışmalarını çözümleme işlemi hem Git birleştirme hem de Git yeniden temeli için geçerlidir. Aşağıdaki adımlar birleştirme sırasında birleştirme çakışmalarının nasıl çözüleceğini açıklasa da, yeniden temel oluşturma sırasında birleştirme çakışmalarını benzer şekilde çözebilirsiniz.

Tip

Kaynak dal bir uzaktan izleme dalıysa, birleştirmeden önce git getirme işlemini çalıştırarak dalın up-to-date olduğundan emin olun. Veya Git çekme komutunu çalıştırarak Git getirme işlemini Git birleştirme ile birleştirebilirsiniz.

Visual Studio 2022, Git menüsünü, Git Değişikliklerini ve Çözüm Gezgini'ndeki bağlam menülerini kullanarak bir Git sürüm denetimi deneyimi sağlar. Visual Studio 2019 sürüm 16.8, Takım Gezgini Git kullanıcı arabirimini de sunar. Daha fazla bilgi için Visual Studio 2019 - Takım Gezgini sekmesine bakın.

  1. Git Deposu penceresinin Dallar bölmesinde hedef dalı kullanıma alın. Ardından kaynak dala sağ tıklayın ve kaynak dalı hedef dala birleştir seçeneğini seçin.

    Visual Studio'nun Git Deposu penceresindeki dal bağlam menüsündeki Birleştir seçeneğinin ekran görüntüsü.

  2. Visual Studio, Git'in çakışmalar nedeniyle birleştirmeyi durdurması durumunda sizi bilgilendirir. Bu durumda, çakışmaları çözebilir veya birleştirmeyi iptal edip birleştirme öncesi durumuna dönebilirsiniz. Git Değişiklikleri penceresinin Birleştirilmemiş Değişiklikler bölümünde, birleştirme çakışmaları olan dosyalar listelenir. İçeriğinde birleştirme çakışmaları olan bir dosya için, dosyayı çift tıklatarak birleştirme düzenleyicisinde açın.

    Visual Studio'nun Git Değişiklikleri penceresinde birleştirme çakışmaları olan dosyaların ekran görüntüsü.

  3. Birleştirme düzenleyicisinde , Gelen bölmesi kaynak dal dosyası sürümünü, Geçerli bölmesi hedef dal dosyası sürümünü ve Sonuç bölmesi sonuç birleştirme dosyasını gösterir. Belirli kaynak veya hedef dal değişikliklerini uygulamak için, saklamak istediğiniz çakışan satırların yanındaki onay kutusunu seçin. Sonuç bölmesinde birleştirme dosyasını doğrudan da düzenleyebilirsiniz. Geçerli dosyadaki tüm birleştirme çakışmalarını çözümledikten sonra Birleştirmeyi Kabul Et'i seçin. İçerik çakışmaları olan her dosya için bu adımı yineleyin.

    Visual Studio'daki birleştirme düzenleyicisinin ekran görüntüsü.

  4. Bir dalda düzenlenen ve diğer dalda silinen bir dosya için, dosyaya sağ tıklayın ve istediğiniz dal eylemini seçin.

    Visual Studio'nun Git Değişiklikleri penceresinde çakışan bir dosyanın bağlam menüsünün ekran görüntüsü.

  5. Git Değişiklikleri penceresinde bir işleme iletisi girin ve tüm dosyalar için tüm birleştirme çakışmalarını çözümledikten sonra birleştirmeyi tamamlamak için İşleme Aşamalı'yı seçin.

    Visual Studio'nun Git Değişiklikleri penceresindeki işleme iletisinin ve İşleme Aşamalı düğmesinin ekran görüntüsü.

Sonraki Adımlar