Tek geliştiriciysem, çekme isteklerini kendi depomda kullanmak için bir amaç var mı?


38

Bu yüzden GitHub'daki gerçek bir projemle başladım ve işler oldukça iyi gidiyor ve fikirler başlangıçta düşündüğümden çok daha hızlı akıyor. İşleri düzenli tutmak için, farklı dallar oluşturabilmek için bazı dallar açarım.

Şimdi şubemi GitHub'a bastığımda, iki butonumun olduğu bir bölüme sahibim: Pull Requestve Compareyakın zamanda bastığım şubenin adı. CompareDüğmenin amacını anlıyorum ama neden kendi depomda bir çekme isteği oluşturmak istediğimi anlamıyorum.

Birisi neden bunu yaptığımı açıklayabilir mi? Tek geliştiriciysem, çekme talebinde bulunmak kendi depomda olabilir mi?

Yanıtlar:


28

Kendi başına çalışan birçok (belki de çoğu) bireysel geliştirici için, çekme istekleri oluşturmak muhtemelen faydalı değildir. Ancak, bunu yapmak için en az bir olası neden düşünebilirim:

Çekme istekleri proje geçmişinizi daha kolay takip etmek için kullanılabilir. Bir çekme isteği, özel bir mesajdan ve bir değişiklik günlüğünde, özelliğinizi korumak zorunda kalmadan, belirli bir değişiklik için kolayca geri dönüp birleştirme noktasını ve birleştirilmiş komisyon kümesini bulmanızı sağlayan bir sorun kimliğine sahiptir. süresiz dallar.

Örneğin, Pioneer bir çekme isteğini birleştirme zaman (utanç verici fiş), biz bir madde ilave değişmek değişim tek hat açıklama ve çekme istek kimliği için bir referans ile,. Elbette, Pioneer'in birkaç geliştiricisi var, ancak aynı mekanizma kendi başına çalışan bir geliştirici için faydalı olabilir.

Doğrusal bir işlem geçmişine bağlı kalmaya karar verirseniz (birleştirme işleminden önce özellik dallarınızı yeniden birleştirerek, böylece birleştirme her zaman hızlı bir şekilde gerçekleştirilebilir), ve Master ile birleşmeden önce taahhütte bulunur, çünkü bu durumda bireysel taahhüt mesajları kendi içinde bir değişiklik dili olarak kullanılabilir.


10

Çekme istekleri oluşturulur; böylece biri işi gözden geçirebilir, yorum yapabilir, önerilerde bulunabilir, düzenlemeler yapabilir veya talep edebilir ve ardından kodu master olarak birleştirebilir.

Senin durumunda birisi sensin.

Tek geliştirici olarak hala kendi çalışmalarınızı gözden geçirmelisiniz, yeniden inceleyin ve hazır olunca ustalaşmak için birleştirin.

Çok kullandığım bir yaklaşım 'başka bir şapkayı giymeyi', 'diğer kişiyi dene'yi denemek. Bu yüzden kısa bir süre oturun ve kendinizi şu duruma koyun: gruba yeni başlayanlar; Genç Geliştirici; Geçmişte saygı duyduğun meslektaşım, vb. Gözlerinin üzerinden bakmaya çalışın ve değişimi daha açık hale getirmek için ne yapabileceğinizi düşünmeye çalışın ve kabile ve alan bilgisinden mümkün olduğunca kaçan daha iyi isimlerle daha iyi yazılmış, daha iyi yazılmış .

Bu nedenle, belirttiğiniz gibi, master için hazır olmayan özellikleri ve değişiklikleri ayırmak istediğinizde branşlarda çalışmalısınız. Bunların hepsini şubelerde yapabilirsiniz (PR görevlerini yine de yerine getirirseniz, bunları yönetmek için çekme isteklerine bile ihtiyacınız yoktur, ancak sizin için yararlı bir yapı sağlayabilir).

Ayrıca, bazen yaptığım değişikliğin işe yaramadığını göreceğim, ancak bunu efendiden geri almaya çalışmaktan korkmak yerine, belki şimdi başka efendi değişikliklerle karıştırılmış, hepsini görmezden gelebileceğim bir dalda yapabilirim / silme yanlış başlıyorsa silin. Bu çok büyük bir avantaj.

Yani gerektiğini branşta çalışmak ve değil tamamını şube birleştirmeye karar verene kadar doğrudan kaptana taahhüt.

Bunlara uyulması gereken kurallar - kural değil - bunlar. Bazen kasten onları kırarım. Örneğin, dün ustalaşmak için bir yazım hatası düzeltme işlemi gerçekleştirdim.


3

Uzak dalların yanı sıra yerel dalların olduğu anlaşılıyor. Bu iş akışının ek yükünü çok fazla buluyorsanız, yerel dalları kullanarak bunları zorlamadan her zaman farklı özellikler üzerinde çalışabilirsiniz.

Temelde sizin için neyin işe yaradığını yapmaktan gelir. Branşlarla çalışmak gitmenin çok büyük bir faydasıdır ve github bunu gerçekten kolaylaştırır, ancak yalnız bir geliştirici olarak çekme talebi modelini kullanmaya ve doğrudan ustaya bağlı kalmaya çalışmanız gerekmeyebilir. Sonunda projeniz inanılmaz derecede başarılı olduğunda ve onlarca veya yüzlerce geliştirici üzerinde çalıştığında, çatallarından istekleri almanın projeyi takip etmenin harika bir yolu olduğunu göreceksiniz.


Birden fazla bilgisayardan çalışırken şubelerimi kasıtlı olarak itiyorum ve kodumun hepsinin aralarında senkronize edilmesini istiyorum. Bunun bilerek cevabını değiştiriyor mu?
marco-fiset

@ marco-fiset cevabını değiştirmemelidir. Tam olarak hangi çekme talebi düğmesine atıfta bulunduğunuzdan bile emin değilim ..
David Cowden

3
"Yalnız bir geliştirici olarak, çekme isteği modelini kullanmanın büyük bir gereği yoktur ve doğrudan ustaya taahhüt etmek gayet iyi çalışmalıdır" diyorsunuz. Ancak çekme isteklerini kullanmamak, dal kullanmamak anlamına gelmez.
Rob N,

0

Çekme istekleri genellikle kod incelemeleri veya kullanıcıların kendi proje çatalları olan kullanıcıların katkıları için kullanılır - bir projedeki tek bir geliştirici için gerçekten bir amaç görmüyorum.


0

Bunu yapmamın nedeni, tüm otomatik kontrollerin geçtiğinden emin olmanın uygun bir yoludur (derler, doğru biçimlendirmeye sahiptir, birim testleri geçer ...).

Her işlem için tüm kontrollerin yapılmasını zorunlu tutmama gerek yok, ancak ana şube başkanının daima kontrolleri geçmesini istiyorum. Çekme isteklerinin kolay bir yol olduğunu düşünüyorum (belki sadece bir tane değil).

Daha genel olarak, değişiklikleri tamamlamak için kancaları birbirine bağlamanın bir yoludur. Testler bir örnektir; @John, başka bir örnek olarak sürüm notları oluşturmayı belirtti.


-2

Çekme istekleri vs git itme sonuçta bireysel veya paylaşılan tarihlerden birine iner. Ana depo, diğerlerinin yerel değişiklikler yapması ve potansiyel olarak yerel değişiklikler yapması durumunda, tüm değişikliklerin kaynağıdır.

Çekme isteği modeli (özel şubelerden veya kişisel depolardan), kodu kullanan ve bu koddan türeyen herkes için tutarlı bir geçmiş sağlamanın bir yolu olarak işlev görür.

Github'a kod yerleştirme nedeninizin bir kısmı, kodu çatallamak için kullanılabilir hale getirmek ve istekleri çekmek olacaktır. Ne zaman olacağını asla bilemezsiniz ve ortak geliştiricinizin geçmişini tutarlı tutmak büyük bir artı olacaktır.


bu sadece uzun zaman önce en çok yanıtlanan
gnat

1
Katılmıyorum. En üstteki cevap temel olarak tekli paylaşılan depodan bahsediyor olsa da, çekme konusundaki tartışma daha çok usule ve bilgi paylaşımına odaklanmıştır. Demek istediğim tutarlı bir tarihi korumak. Daha fazla bilgi için bkz. Movingfast.io/articles/git-force-pushing . Birisi bir çatal veya klonu kullanıyorsa ve geçmişi yeniden yazarsanız, başvurdukları ebeveyn kaybolabilir.
Matthew Tippett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.