Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud DevOps:Push review modu

Son Güncelleme:Oct 07, 2026

Push review modu, ek araçlara ihtiyaç duymadan Merge Request'leri otomatik olarak oluşturup yöneterek git push iş akışını basitleştirir ve hem kod kalitesini hem de iş birliğini artırır.

Otomatik kod incelemesi

Codeup'ta, AGit-Flow modu, git pr komutunu çalıştırarak komut satırından kod incelemesi oluşturmanıza olanak tanır; bu da inceleme oluşturma sürecini daha verimli hale getirir. Ancak bu mod, git-repo aracının yerel olarak yüklenmesini ve belirli komutların çalıştırılmasını gerektirir. Birçok geliştirici, gönderilen kodun hedef dala itilmeden önce incelenmesini sağlayan bir iş akışı tercih eder. Push review modu, git push komutunu çalıştırdığınızda commit'leriniz için otomatik olarak bir Merge Request oluşturarak bunu gerçekleştirir ve ek araçlara ihtiyaç duymaz.

Push review modunun avantajları

Push review modu, Codeup'ta sunulan ve verimli bir kod inceleme deneyimi sağlayan yeni bir kod iş birliği yöntemidir:

  • Geliştiriciler için: Kod incelemesi başlatmak amacıyla artık yeni bir dal oluşturmanız veya web tarayıcısına geçmeniz gerekmez. Tek adımda bir Merge Request oluşturmak için yalnızca git push komutunu çalıştırmanız yeterlidir.

  • Yöneticiler için: Geliştiriciler kodu push ettiğinde dalın doğrudan güncellenmemesi, bunun yerine otomatik olarak bir Merge Request oluşturulması için bir depo yapılandırabilirsiniz. Bu sayede zorunlu inceleme süreci sayesinde kod kalitesi garanti altına alınır.

Aşağıdaki tabloda push review modu ile standart dal geliştirme modu karşılaştırılmaktadır.


Dal geliştirme modu


Push review modu


Kod commit etme


Bir özellik dalına commit edin.


Doğrudan master dalına commit edin.


Kod incelemesi başlatma


Codeup web kullanıcı arayüzünü kullanın.

git push komutunu çalıştırın.


Kod incelemesini güncelleme


Özellik dalını güncelleyin.

git push komutunu tekrar çalıştırın.


Katkı sağlamak için gereken izinler


Geliştirici veya üstü


Görüntüleyici veya üstü


Kod kalitesi


Yalnızca korumalı dallara yapılan push işlemleri incelenir.


Herhangi bir dala yapılan tüm push işlemleri incelenir.

Depo ayarlarınızda push review modunu etkinleştirdikten sonra aşağıdaki avantajlardan yararlanırsınız:

  • Yeni bir dal oluşturmadan kod katkısı sağlayabilir ve bir Merge Request oluşturabilirsiniz. Değişiklikleri doğrudan master dalında commit ederek gereksiz dalları yönetme yükünden kaçınabilirsiniz.

  • git push komutunu çalıştırmak, değişiklikleri doğrudan dala itmek yerine bir Merge Request oluşturur veya mevcut olanı günceller.

  • İnceleme sonrasında kodunuzda değişiklik yapmanız gerekirse, daha fazla commit ekleyip git push komutunu tekrar çalıştırarak mevcut Merge Request'i otomatik olarak güncelleyebilirsiniz.

  • Yalnızca Görüntüleyici iznine sahip kullanıcılar kod katkısı sağlayabilir. Push işlemleri kodu doğrudan birleştirmek yerine Merge Request oluşturduğundan, yazma izinlerini birkaç yöneticiyle sınırlayıp çoğu geliştiriciye yalnızca okuma izni verebilirsiniz. Bu model, depoda yanlışlıkla yapılan değişiklik riskini azaltır.

  • Git push davranışını kontrol etmek için bir push option kullanabilirsiniz. Daha fazla bilgi için Push review modu ile iş birliği bölümüne bakın.

Push review modunu etkinleştirme

yolunu izleyin ve push review modunu etkinleştirmek veya devre dışı bırakmak için anahtara tıklayın.

image

Önemli

Push review modunu etkinleştirmek, git push davranışını değiştirir. Modu etkinleştirmeden önce bu değişikliği lütfen dikkate alın ve anlayın:

  • Etkinleştirildikten sonra, git push komutunu çalıştırmak uzak dalı doğrudan güncellemek yerine otomatik olarak bir Merge Request oluşturur veya mevcut olanı günceller. Bu durum, depo için Geliştirici izninize sahip olsanız bile geçerlidir.

  • Görüntüleyici rolüne sahip bir kullanıcı, bir Merge Request oluşturmak için git push komutunu çalıştırabilir. Kod, dalın gereksinimlerine göre onaylanıp birleştirilene kadar dala dahil edilmez.

  • git push komutu kodu doğrudan güncellemek yerine bir Merge Request oluşturduğundan, push olayları için Webhook'ları tetiklemez.

  • İnceleme iş akışının bir parçası olarak dosya oluşturmak, düzenlemek veya silmek için Codeup web kullanıcı arayüzünü kullanmaya devam edebilirsiniz.

Push review modu ile iş birliği

Aşağıdaki örnekler, geliştirme iş birliği için push review modunun nasıl kullanılacağını göstermektedir.

Otomatik Merge Request oluşturma

Yeni bir geliştirme göreviniz olduğunu varsayalım. Push review moduyla iş akışı yalnızca iki adımdan oluşur:

  • Master dalında geliştirme yapın.

  • git push komutunu çalıştırın.

Bir örneği adım adım inceleyelim.

  1. Örnek deponun master dalında geliştirme yapın ve bir commit oluşturun; örneğin, 27e76f58.

    $ git log
    commit 27e76f582ca7207a695dd8762b66ef443adcc572 (HEAD -> master)
    Author: Codeup User <codeup.user@example.com>
    Date:   Tue Oct 11 10:16:18 2022 +0800
    
        feat: new feature
    
        Signed-off-by: Codeup User <codeup.user@example.com>
    
    commit 44094ec92eb122deab5a0367552bd081540c4353 (origin/master, origin/HEAD)
    Author: Codeup User <codeup.user@example.com>
    Date:   Tue Oct 11 10:09:39 2022 +0800
    
        Initial commit
  2. Ardından, git push komutunu çalıştırarak değişiklikleri uzak depoya itin:

    $ git push
    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 310 bytes | 310.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    remote: +-----------------------------------------------------------------------------------+
    remote: | The following tips are provided by Codeup:                                        |
    remote: +-----------------------------------------------------------------------------------+
    remote: | Merge request #31620 has been created, please visit:                              |
    remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
    remote: +-----------------------------------------------------------------------------------+
    To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
     * [new reference]         master -> refs/merge-requests/31620/head

Gördüğünüz gibi, push review modu etkinleştirildiğinde git push komutu uzak dalı doğrudan güncellemedi. Bunun yerine, #31620 numaralı Merge Request'i oluşturdu. Bu Merge Request'in kaynağı en son yerel commit'iniz, hedefi ise mevcut daldır. Bunu Merge Request ayrıntıları sayfasında doğrulayabilirsiniz:

高的 (55)

Bu iş akışı, bir özellik dalı oluşturma veya Merge Request oluşturmak için web tarayıcısı kullanma ihtiyacını ortadan kaldırarak süreci büyük ölçüde basitleştirir. Ayrıca, tüm push işlemlerinin birleştirilmeden önce incelenmesi gerektiğinden code quality garantilenir.

Otomatik Merge Request güncellemeleri

Kod incelemesi sırasında, inceleyenlerin geri bildirimlerine dayanarak kodunuzu birden çok kez değiştirmeniz gerekir. İlgili Merge Request'i güncellemek için git push komutunu tekrar çalıştırmanız yeterlidir. Bir örneği inceleyelim.

İlk olarak, 27e76f58 commit'ini temel alarak inceleme yorumlarına göre değişiklikler yapın ve e00db452 adlı yeni bir commit oluşturun.

$ git log
commit e00db4522f2d6ca5b42377ca76c7b3a7e12db8a5 (HEAD -> master)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 11:09:42 2022 +0800

    feat: fix comment

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 27e76f582ca7207a695dd8762b66ef443adcc572
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:16:18 2022 +0800

    feat: new feature

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 44094ec92eb122deab5a0367552bd081540c4353 (origin/master, origin/HEAD)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:09:39 2022 +0800

    Initial commit

Ardından, git push komutunu çalıştırın. Sistem Merge Request'i otomatik olarak günceller ve bir onay mesajı görüntüler.

$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 340 bytes | 340.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31620 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   27e76f582c..e00db4522f  master -> refs/merge-requests/31620/head

Çıktı, bu push işleminin #31620 numaralı Merge Request'i güncellediğini göstermektedir. Ayrıntılar sayfasını kontrol ederseniz, Merge Request'in kaynak sürümünün e00db4522 olarak değiştiğini ve commit geçmişinde artık iki commit bulunduğunu görürsünüz. Daha fazla değişiklik gerekirse bu işlemi tekrarlayın.

Yeni bir Merge Request oluşturma

git push komutunu tekrar tekrar çalıştırmak mevcut bir Merge Request'i otomatik olarak günceller. Mevcut olanı güncellemek yerine yeni bir Merge Request oluşturmak istiyorsanız, komuta bir push option ekleyebilirsiniz. Yeni bir Merge Request oluşturmak için git push -o review=new komutunu çalıştırın.

Yerel değişiklikleri yaptıktan sonra git push -o review=new komutunu çalıştırın. ID'si #31626 olan yeni bir Merge Request oluşturulur.

$ git push -o review=new
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 361 bytes | 361.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31626 has been created, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 * [new reference]         master -> refs/merge-requests/31626/head

Not: Zaten açık olan aynı kimliğe sahip bir Merge Request varsa yeni bir tane oluşturamazsınız.

$ git push -o review=new
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request create failed. There exists a same merge request in progress:       |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (create MR failed)
error: failed to push some refs to 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

Belirli bir Merge Request'i güncelleme

Aynı hedef dal için birden çok açık Merge Request'iniz varsa, sistem hangisini güncelleyeceğini belirleyemediğinden git push komutu başarısız olur.

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: +-------------------------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                                      |
remote: +-------------------------------------------------------------------------------------------------+
remote: | You need to manually specify the merge request to update because there are already              |
remote: | multiple merge requests that you created earlier for the same target branch:                    |
remote: |                                                                                                 |
remote: | * [ID: 31626] https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: | * [ID: 31620] https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: |                                                                                                 |
remote: | Then, update specific merge request based on it's ID (MR-ID):                                   |
remote: |     git push -o review=<MR-ID>                                                                  |
remote: |                                                                                                 |
remote: | Or you can create a new one:                                                                    |
remote: |     git push -o review=new                                                                      |
remote: +-------------------------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (unable to determine which mr to update)
error: failed to push some refs to 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

Çıktı, aynı hedef dal için ID'leri 31626 ve 31620 olan iki açık Merge Request olduğunu göstermektedir. Sistem hangisini güncellemek istediğinizi belirleyemez. İki seçeneğiniz vardır:

  • Yeni bir Merge Request oluşturmak için -o review=new seçeneğini kullanın.

  • Güncellemek istediğiniz Merge Request'in ID'sini belirtmek için -o review=<MR-ID> seçeneğini kullanın.

İlk seçenek Yeni bir Merge Request oluşturma bölümünde gösterilmişti. Şimdi belirli bir Merge Request'in nasıl güncelleneceğine bakalım.

#31626 numaralı Merge Request'i güncellemek için şu komutu çalıştırın: git push -o review=31626.

$ git push -o review=31626
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 303 bytes | 303.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31626 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   0ba010f2ff..037578c634  master -> refs/merge-requests/31626/head

Bu işlem, ID'si 31626 olan Merge Request'i günceller.

Güncelleme çakışmalarını çözme

Bir Merge Request'i güncellemeye çalıştığınızda, başka bir kullanıcının onu zaten güncellemiş olduğunu görebilirsiniz. Push işleminizin diğerinin değişikliklerinin üzerine yazmasını önlemek için güncelleme başarısız olur. Örneğin, git push -o review=31644 komutunu çalıştırarak #31644 numaralı Merge Request'i güncellemeye çalışırsanız aşağıdaki hatayı görebilirsiniz:

$ git push -o review=31644
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 326 bytes | 326.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +--------------------------------------------+
remote: | The following tips are provided by Codeup: |
remote: +--------------------------------------------+
remote: | MR is diverged with this push              |
remote: +--------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (MR is diverged with this push)
error: failed to push some refs to 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

Hata mesajı, push işleminizin uzak Merge Request ile ayrıştığını göstermektedir. İki seçeneğiniz vardır:

  • Diğer kullanıcının değişikliklerini çekin, çakışmaları yerel olarak çözümleyin ve ardından tekrar push yapın.

  • Merge Request'i yerel değişikliklerinizle zorla güncelleyin.

İlk seçeneği, yani uzak değişiklikleri çekmeyi ve çakışmaları yerel olarak çözümlemeyi inceleyelim.

İlk olarak, git fetch origin refs/merge-requests/<mr-id>/head komutunu çalıştırın. Bu örnekte mr-id değeri 31644 olduğundan komut şöyledir: git fetch origin refs/merge-requests/31644/head

$ git fetch origin refs/merge-requests/31644/head
From https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo
 * branch                  refs/merge-requests/31644/head -> FETCH_HEAD

Ardından, git rebase FETCH_HEAD komutunu çalıştırarak yerel değişikliklerinizi çekilen referansın üzerine rebase edin. Bu işlem çakışmalara neden olabilir. Çakışma oluşursa bunları normal şekilde çözümleyin.

$ git rebase FETCH_HEAD
Successfully rebased and updated refs/heads/master.

Başarılı bir rebase işleminden sonra yerel dalınız uzak değişiklikleri içerir. Artık tekrar push yapabilirsiniz.

$ git push -o review=31644
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 331 bytes | 331.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31644 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   a4a2cad45c..8da076fb44  master -> refs/merge-requests/31644/head

Artık #31644 numaralı Merge Request'i başarıyla güncellediniz.

Merge Request'i zorla güncelleme

Bazen, bir Merge Request'teki uzak değişiklikleri yerel sürümünüzle değiştirmek isteyebilirsiniz. Bunu yapmak için zorla güncelleme gerçekleştirmeniz gerekir.

İki bilgiye ihtiyacınız olacak:

  • Merge Request ID'si. Bu, Merge Request URL'sinin sonundaki sayıdır. Örneğin, URL https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644 ise ID 31644 olur.

  • Merge Request'in mevcut kaynak sürümü. Bunu Merge Request ayrıntıları sayfasında bulabilirsiniz. Bu örnekte kaynak sürüm 8da076fb değeridir.

Ardından, git push -o review=<mr-id> -o old-oid=<old-oid> komutunu çalıştırın. Bu örnek için komut git push -o review=31644 -o old-oid=8da076fb şeklindedir.

Bu komut, #31644 numaralı Merge Request'i yerel sürümünüzle eşleşecek şekilde zorla günceller. Dikkatli olun: Bu işlem, diğer kullanıcılar tarafından yapılan değişikliklerin üzerine yazar. Başkalarının çalışmalarının üzerine yazmamak için uzak değişikliklerden vazgeçmek istediğinizden emin olduğunuzda yalnızca bu komutu kullanın.

$ git push -o review=31644 -o old-oid=8da076fb
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31644 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   8da076fb44..8da076fb44  master -> refs/merge-requests/31644/head

İncelemeyi atlayıp doğrudan push yapma

Bir yorumda yazım hatası düzeltmek gibi küçük bir değişiklik yaptıysanız ve kod inceleme sürecini atlamak istiyorsanız git push -o review=no komutunu kullanabilirsiniz. Bu komut, push review modu devre dışı bırakıldığında standart bir git push komutuyla aynı şekilde davranır. review=no seçeneğini kullanmak için hedef dal üzerinde doğrudan push iznine sahip olmanız gerektiğini unutmayın.

Kullanım notları

Bir Merge Request'i güncellemek için onun yazarı veya inceleyeni olmanız gerekir. Aksi takdirde güncelleme başarısız olur.

remote: +---------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                          |
remote: +---------------------------------------------------------------------+
remote: | Merge request #31644 update failed.                                 |
remote: | You need to be the author or reviewer to update this merge request. |
remote: +---------------------------------------------------------------------+