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 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
- Visual Studio 2019 - Git menüsü
- Visual Studio 2019 - Takım Gezgini
- Git Komut Satırı
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.
Git > Deposu penceresini açmak için Git Dalları Yönet'i seçin.
Git Deposu penceresinde hedef dala sağ tıklayın ve Kullanıma Alma'yı seçin.
Kaynak dala sağ tıklayın ve Hedef dalı kaynak> dalda> yeniden temelle'yi <<seçin.
Visual Studio, başarılı bir yeniden temelden sonra bir onay iletisi görüntüler.
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.
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:
Araçlar>Seçenekler>Kaynak Denetimi>Git Genel Ayarlar'ne gidin.
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.
- Visual Studio 2022
- Visual Studio 2019 - Git menüsü
- Visual Studio 2019 - Takım Gezgini
- Git Komut Satırı
Git Değişiklikleri penceresinde, işlemenizi göndermek için anında iletme düğmesini seçin.
İsterseniz Git menüsünden Gönder'i de seçebilirsiniz.
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.
Başarılı bir gönderimden sonra Visual Studio bir onay iletisi görüntüler.
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
- Visual Studio 2019 - Git menüsü
- Visual Studio 2019 - Takım Gezgini
- Git Komut Satırı
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.