Yeniden temellendirme ile değişiklikleri uygulama

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git, her yeni işlemeyi kendi öncüline bağlayarak bir dalda geliştirme geçmişini otomatik olarak korur. Bir dalı başka bir dalla birleştirdiğinizde, geçmiş daha az basit hale gelebilir. Örneğin, hızlı olmayan bir birleştirme , birden çok öncülle birleştirme işlemesi oluşturarak farklı geliştirme hatlarını birleştirir. Buna karşılık Git yeniden tabanı, birleştirme işlemesi oluşturmadan farklı geliştirme satırlarını birleştirir ve bu da daha basit bir işleme geçmişine neden olur ancak birleştirme hakkındaki bilgileri kaybeder. Birleştirme türü seçiminiz, birleştirme kaydını korumak mı yoksa işleme geçmişini basitleştirmek mi istediğinizden etkilenir.

Bu makalede, ileri sarmalı birleştirme yerine ne zaman yeniden temel kullanılacağı açıklanır ve aşağıdaki görevler için yordamlar sağlanır:

  • Yerel dalınızı yeniden temel oluşturma
  • Yeniden temel aldıktan sonra yerel dalınızı göndermeye zorlama
  • Yerel işlemeleri sıkıştırmak için etkileşimli yeniden temel

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

Yerel dalınızı yeniden temel oluşturma

Git rebase , bir kaynak daldan gelen işlemeleri geçerli yerel dalınızla (hedef dal) tümleştirir. Kaynak dal değişmeden kalır. Karşılaştırma için Git yeniden temeli ve diğer birleştirme türleri aşağıdaki diyagramda gösterilmiştir.

Git yeniden temeli kullanılırken işleme öncesi ve sonrası işlemelerini gösteren diyagram.

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. 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. Özellikle Git yeniden temeli, diğer birleştirme stratejileri için geçerli olmayan mevcut hedef dal işlemelerinin 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.

Yeniden temel oluşturma sırasında, kaynak dal değişikliği hedef dal değişikliğiyle çakışırsa Git, birleştirme çakışmasını çözmenizi ister. Yeniden temel oluşturma sırasında birleştirme çakışmalarını, birleştirme sırasındaki birleştirme çakışmalarını çözümlediğiniz şekilde çözebilirsiniz.

Yeniden temelle ve hızlı iletme olmayan birleştirme karşılaştırması

Git'in yenidenbasing işlemi, üç yönlü veya doğru birleştirme olarak bilinen ileri sarmalı birleştirme işleminden daha basit ancak daha az kesin işleme geçmişiyle sonuç verir. İşleme geçmişinde bir birleştirme kaydının olmasını istediğinizde, hızlı olmayan bir birleştirme kullanın.

Bir özellik veya hata düzeltme dalı üzerinde çalışan tek kişi sizseniz, yeni main dal çalışmalarını düzenli aralıklarla tümleştirmek için yeniden temel kullanmayı göz önünde bulundurun. Bu strateji, başkaları tarafından yapılan son çalışmaların farkında olmanıza ve ortaya çıkan birleştirme çakışmalarını hemen çözmenize yardımcı olur. Yeniden ekleyerek, yeni özelliğinizi doğrusal işleme geçmişinin korunmasına yardımcı olan en son main dal çalışmalarının üzerine uygularsınız.

Git yeniden temeli ve ne zaman kullanılacağı hakkında daha fazla bilgi için bkz . Yeniden temel alma ve birleştirme.

Yeniden temel ve zorla gönderme yönergeleri

Daha önce göndermiş olduğunuz bir yerel dalı yeniden temel alır ve ardından varsayılan Git anında iletme komutunu yeniden çalıştırırsanız gönderim başarısız olur. Varsayılan Git anında iletme komutu, yerel dalınızı uzak dalla tümleştirmek için bir hızlı iletme birleştirmesi uygular. Yeniden temel, yerel hedef dalınızdaki mevcut işlemelerin sırasını değiştirdiğinden, bu komut yeniden temelden sonra başarısız olur ve bu nedenle artık uzak karşılık gelenin geçmişiyle eşleşmez. Bu senaryoda, uzak dalın üzerine yazarak zorla gönderme başarılı olur.

Git'i yeniden temellendirme ve göndermeye zorlama güçlü araçlardır, ancak bunları kullanıp kullanmama konusunda karar verirken şu yönergeleri göz önünde bulundurun:

  • Paylaşılan dalı kimsenin kullanmadığından emin değilseniz, gönderilen ve başkalarıyla paylaşılan bir yerel dalı yeniden temel alma. Yeniden temel aldıktan sonra, yerel dalınız artık uzak karşılık geleninin geçmişiyle eşleşmez.
  • Uzak dalın yerel sürümü artık güncelleştirilmiş uzak dal geçmişiyle eşleşmeyeceğinden, başkaları tarafından kullanılan uzak dala göndermeye zorlamayın.
  • Ekibinizin yeniden temel almaya ve göndermeye zorlamaya yönelik kullanım senaryoları üzerinde anlaşmaya varması gerekir.

İpucu

İşbirliğine dayalı bir gözden geçirme işlemi için, yeni çalışmayı uzak deponun varsayılan dalı ile birleştirmek için bir çekme isteği kullanın.

Yeniden temel oluşturma

Visual Studio 2022, Git menüsünü, Git Değişikliklerini ve Çözüm Gezgini 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 penceresini açmak için Git Dalları Yönet'i seçin.

    Visual Studio'nun Git menüsündeki Dalları Yönet seçeneğinin ekran görüntüsü.

  2. Git Deposu penceresinde hedef dala sağ tıklayın ve Kullanıma Alma'yı seçin.

    Visual Studio'nun Git Deposu penceresindeki dal bağlam menüsündeki Kullanıma Alma seçeneğinin ekran görüntüsü.

  3. Kaynak dala sağ tıklayın ve Hedef dalı kaynak> dalda> yeniden temelle'yi <<seçin.

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

  4. Visual Studio, başarılı bir yeniden temelden sonra bir onay iletisi görüntüler.

    Visual Studio'nun Git Deposu penceresindeki rebase onay iletisinin ekran görüntüsü.

    Birleştirme çakışmaları nedeniyle yeniden temel durdurulmuşsa, Visual Studio sizi bilgilendirir. Çakışmaları çözebilir veya yeniden temeli iptal edip yeniden temel öncesi durumuna dönebilirsiniz.

    Visual Studio'nun Git Deposu penceresindeki rebase çakışma iletisinin ekran görüntüsü.

Yeniden temel aldıktan sonra yerel dalınızı göndermeye zorlama

Daha önce göndermiş olduğunuz bir yerel dalı yeniden temel alırsanız, sonraki varsayılan Git gönderimi başarısız olur. Bunun yerine, yerel dalınızı, işleme geçmişlerinin eşleşmesi için uzak karşılık geleninin üzerine yazmaya zorlayabilirsiniz.

Uyarı

Başkalarının üzerinde çalıştığı bir dalı hiçbir zaman zorla göndermeyin. Daha fazla bilgi için bkz . Gönderme yönergelerini yeniden temel alma ve zorlama.

Visual Studio'da göndermeyi zorlamak için önce göndermeye zorla seçeneğini etkinleştirmeniz gerekir:

  1. Araçlar>Seçenekler>Kaynak Denetimi>Git Genel Ayarlar'ne gidin.

  2. Göndermeyi etkinleştir --force-with-lease seçeneğini belirleyin.

Git anında iletme --force-with-lease bayrağı, zorla göndermekte olduğunuz yerel dalla tümleştirilmeyen işlemeleri olan uzak dalın üzerine yazmayacağı için bayraktan daha --force güvenlidir.

  1. Git Değişiklikleri penceresinde, işlemenizi göndermek için anında iletme düğmesini seçin.

    Visual Studio'nun Git Değişiklikleri penceresindeki yukarı ok basma düğmesinin ekran görüntüsü.

    İsterseniz Git menüsünden Gönder'i de seçebilirsiniz.

    Visual Studio'daki Git menüsündeki Gönder seçeneğinin ekran görüntüsü.

  2. Varsayılan Git anında iletme işlemi başarısız olursa, Visual Studio Git-Push başarısız iletişim kutusunu başlatır. Göndermeye Zorla'yı seçin.

    Visual Studio'da Git gönderme başarısız iletişim kutusunun ekran görüntüsü.

  3. Başarılı bir gönderimden sonra Visual Studio bir onay iletisi görüntüler.

    Visual Studio'da anında iletme onayı iletisinin ekran görüntüsü.

Yerel işlemeleri sıkıştırmak için etkileşimli yeniden temel

Genellikle, yerel özellik dalınızın yeni bir özelliği üzerinde çalışırken birden çok işleme oluşturursunuz. Yeni özelliği yayımlamaya hazır olduğunuzda, işleme geçmişini basitleştirmek için bu işlemeleri tek bir işlemede birleştirmek isteyebilirsiniz. Birden çok işlemeyi tek bir işlemede sıkıştırmak için etkileşimli bir yeniden temel kullanabilirsiniz.

Visual Studio 2022 etkileşimli yeniden dengelemeyi desteklemez. Bunun yerine Git komut satırını kullanın.

Not

Azure DevOps kullanıcıları, çekme isteği sırasında konu dalının işleme geçmişini daraltmak için birleştirmeyi sıkıştırabilir.

Sonraki adımlar