Aracılığıyla paylaş


Rebase ile değişiklikleri uygula

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ı ilerleme yapılmayan bir birleştirme, birden çok öncülle birleştirme işlemi oluşturarak ayrışmış 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 oluşturun
  • Yeniden temel aldıktan sonra yerel dalınızı zorla pushlayın
  • 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.

Önkoşullar

Kategori Gereksinimler
Proje erişimi projesiüyesi.
İzinler - Özel projelerde kodu görüntüleme: En az Temel erişimi.
- Özel projelerde kodu klonlama veya katkıda bulunma: Projede Katkıda Bulunanlar güvenlik grubuna üyelik veya ilgili izinler.
- Dal veya depo izinlerini ayarlayın: izinleri yönetin dal veya depo için.
- Varsayılan dalı değiştir: Depo için politika izinlerini düzenleyin.
- Depoyu içeri aktarma: Proje Yöneticileri güvenlik grubunun üyesi veya Git proje düzeyi Depo oluşturma izni İzin verolarak ayarlanmıştır. Daha fazla bilgi için bkz . Git deposu izinlerini ayarlama.
Hizmetler Repo'lar etkinleştirildi.
Araçlar Opsiyonel. az repos komutlarını kullanın: Azure DevOps CLI.

Uyarı

Genel projelerde, Paydaş erişimi olan kullanıcılar, kod görüntüleme, kopyalama ve koda katkıda bulunma dahil olmak üzere Azure Depolarına tam erişime sahiptir.

Kategori Gereksinimler
Proje erişimi projesiüyesi.
İzinler - Kodu görüntüle: En az Temel erişim.
- Kodun bir kopyasını oluşturma veya koda katkıda bulunma: Katkıda Bulunanlar güvenlik grubunun üyesi veya projedeki ilgili izinlere sahip olma.
Hizmetler Repo'lar etkinleştirildi.

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

Git rebase, bir kaynak daldan gelen taahhütleri geçerli yerel dalınıza (hedef dal) entegre eder. 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 kullanılırken işleme öncesi ve sonrası işlemleri 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 bir başka yolu, rebase işleminin, hedef dalınızdaki değişiklikleri kaynak dal geçmişinin üzerine yeniden oynatmasıdır. Özellikle Git rebase, diğer birleştirme stratejileri için geçerli olmayan mevcut hedef dalın commit'lerinin 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.

Rebase ve hızlı iletimsiz birleştirme

Git'in yeniden düzenleme işlemi, hızlı-ileri değil birleştirme olarak da bilinen üç yönlü veya doğru birleştirmeden daha basit ancak daha az kesin bir işlem geçmişiyle sonuçlanır. İş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. Yeni özelliğinizi en son main dalının üstüne yeniden üsleyerek doğrusal bir işlem geçmişi sürdürmeye yardımcı olursunuz.

Git rebase ve ne zaman kullanılacağı hakkında daha fazla bilgi için bkz. Rebase 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 push komutu, yerel dalınızı uzak dalla tümleştirmek için bir hızlı ileri sarma birleştirmesi uygular. Rebase işlemi, yerel hedef dalınızdaki mevcut işlemelerin sırasını değiştirdiğinden, bu komut rebase'den sonra başarısız olur ve uzak muadilinin geçmişiyle artık eşleşmez. Bu senaryoda, uzak dalın üzerine yazarak zorla gönderme başarılı olur.

Git rebase ve force push güçlü araçlardır, ancak bunları kullanıp kullanmama konusunda karar verirken şu yönergeleri göz önünde bulundurun:

  • Başka kişilerle paylaşılan bir yerel dal gönderildiyse ve başkaları şu anda bu dalı kullanıyorsa, bu dalı yeniden temel almayın; paylaşılan dalı kimsenin kullanmadığından emin olmadıkça bu işlemi yapmayın. Yeniden birleştirme yaptıktan sonra, yerel dalınız artık uzak sunucudaki dalın geçmişiyle eşleşmeyecektir.
  • 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.

Tavsiye

Birlikte gözden geçirme süreci için, yeni çalışmayı uzak deponun varsayılan dalı ile birleştirmek amacıyla pull request 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 > Dalları Yönet seçeneğini seçerek Git Deposu penceresini açın.

    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 Çıkış Yap'ı 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 dal üzerine yeniden temellemek için<< 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 bir rebase durdurulursa, Visual Studio sizi bilgilendirir. Çakışmaları çözebilir veya rebase işlemini iptal edip rebase öncesi duruma 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ı zorla gönderin

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 güçlü bir şekilde itmeyin. Daha fazla bilgi için bkz. Rebase ve force push yönergeleri.

Visual Studio'da zorlama gönderme yapmak için önce zorlama gönderme seçeneğinin açılması gerekiyor.

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

  2. Push'u etkinleştir --force-with-lease seçeneğini seçin.

Git push --force-with-lease bayrağı, zorla gönderdiğiniz yerel dallar ile tümleştirilmeyen commit'leri olan uzak dalın üzerine yazmayacağı için --force bayrağından daha güvenlidir.

  1. Git Değişiklikleri penceresinde, değişikliklerinizi göndermek için push 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 gönderme işlemi başarısız olursa, Visual Studio başarısızGit-Push iletişim kutusunu başlatır. Zorla Gönder'i 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 commitleri sıkıştırmak için etkileşimli yeniden düzenleme

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. Etkileşimli bir yeniden düzenleme kullanarak birden çok taahhüdü tek bir taahhüde sıkıştırabilirsiniz.

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

Uyarı

Azure DevOps kullanıcıları, çekme isteği sırasında konu dalının commit geçmişini yoğunlaştırmak için squash birleştirme yapabilir.

Sonraki adımlar