2 dallı GİT dallanma stratejisi ( ana dal, görev) - ana dalda kod kaybını nasıl önleyebilirim?

0

Soru

Master, development, hotfix, release, feature içeren GİT dallanma stratejisi hakkında okuyorum.

Bir python web sitesinde çalışan 5 geliştiriciyiz. Aşağıda GitHub'da kullanmak istediğim dallanma stratejisi var.

  1. Üretim kodu ana daldadır.
  2. Ana daldan bir Görev dalı oluşturuyorum.
  3. Görev dalında çalışıyorum ve kodu git'e itmeden önce master'a geçiyorum ve kodu çekiyorum, Task'a geçiyorum ve master ile birleşiyorum. Bu, kodumun remote master ile senkronize olması içindir
  4. İtme kodu
  5. Pr'yi Görev şubesinden ana şubeye yükseltin.

Master, Görev dalımda eksik olduğum ek koda sahipse ve 3. adımı çalıştırmayı unutursam ne olur?

git github
2021-11-23 14:18:56
2

En iyi cevabı

1

GitHub kullanıyorsanız, şubelerin aşağıdakilerle güncel olmasını gerektiren bir Şube Koruma Kuralı ekleyebilirsiniz: master bir Çekme İsteğinde birleştirilmesine izin verilmeden önce dallanma:

GitHub's 'require branches to be up to date before merging' protection rule

Birleştirmeden önce dalın temel dalla güncel olması gerekir.

GitHub Şube Koruma kuralı belgelerine buradan bakın.

2021-11-23 14:34:28

Diğer cevap bunun otomatik olduğuna işaret ediyor gibi görünüyor mu?
variable

Bu sizin için ekstra bir güvenlik kontrolüdür. master şube. Bu dal koruma kuralı devre dışı bırakılırsa, dokümanlar şöyle der: "Temel dalla uyumsuz değişiklikler varsa, dalınızı birleştirdikten sonra durum denetimleri başarısız olabilir."
Adil B

Bu önlemek birleştirme bile orada hiçbir çatışma (yani hiçbir satır çakışma) ama kodu değişti diğer yerler? Böylece geliştiriciyi bir PR yapmadan önce en son kodu çekmeye ve birleştirmeye zorluyor musunuz?
variable

Evet, bu şube koruma kuralının amacı budur. Dokümantasyon sayfası da bazı yararlı ayrıntılara sahiptir.
Adil B

PR olmadan master'a basmayı önlemek için ayar nerede?
variable

Etkinleştir Restrict who can push to matching branches şube koruma kuralı ve doğrudan itmeleri kısıtlayabilirsiniz master depo yöneticileri de dahil olmak üzere.
Adil B
1

Şifreyi kaybetmeyeceksin. Eğer senin Task şube senkronize edilmeden itilir master ilk olarak, GitHub herhangi bir çakışma olup olmadığını size söyleyecektir.

Çakışma durumunda, bu iletiyi halkla İlişkiler'de alırsınız:


enter image description here


O zaman indirebiliriz master yerel olarak, çakışmaları düzeltin ve değişiklikleri geri itin Task.

Çakışan dosyalar yoksa, dosyalarınızı güncellemeden birleştirebilirsiniz. Task şube, olsa bile master ileride.

2021-11-23 14:30:54

Ne demek If there are no conflicting files - tüm dosyayla veya çakışan belirli satırlarla ilgili çakışma yok mu demek istiyorsunuz?
variable

Yani herhangi bir çakışma olur karşılaştığınızda size birleştirme yerel: çizgiler gıt birleştirme edemiyor kendisi. Bütün bir dosya (silinmiş dosya ve değiştirilmiş dosya) veya belirli satırlar olabilir. Ancak aynı dosyayı iki farklı bölümde değiştirirseniz çakışma olmaz
thchp

Orada herhangi bir şekilde önlenir birleştirme bile orada hiçbir çatışma (yani hiçbir satır çakışma) ama kodu değişti diğer yerler?
variable

Repo'nuzda hızlı ileri birleştirme işlemini zorlayabilirsiniz stackoverflow.com/questions/60597400/ ... Ama bunu yapmanın amacı ne olurdu? Üretim dalınızı korumak istiyorsanız, ekibinizin bu dalda birleşmesine izin vermemelisiniz, ancak buna hakkı olanlar hariç (rolü sürdürün ve rolü yazın belki?)
thchp

Tarafından önlemek birleştirme geliyordu önlemek PR.
variable

Halkla ilişkileri engelleyemezsiniz. Dalları yalnızca yöneticilerin bir pr'yi birleştirebilmesi için koruyabilir ve doğrusal geçmişi zorlayarak pr'lerin güncel olmasını isteyebilirsiniz
thchp

Diğer cevapta belirtilen ayar ne olacak?
variable

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................