GitHub'daki başkalarının koduna nasıl katkıda bulunabilirim? [kapalı]


231

GitHub'daki belirli bir projeye katkıda bulunmak istiyorum . Ben Meli çatal bunu? Dal mı? Ne önerilir ve nasıl yapılır?


61
Başka bir saçma yakın
stephen

4
Github'da Concrete5'e katkıda bulunmak için adım adım daha ayrıntılı bir kılavuz yazdım, ancak süreç herhangi bir projeye uygulanabilir. Şuna bir bak .
Joe Meyer

7
Bunun nasıl 'yapıcı' olmadığını gerçekten görmüyorum. Yalnızca oylar ve görüşler, insanların cevaplamak istedikleri popüler bir soru olduğunu kanıtlar.
Ian


1
belki de yeterli çoğunluk oyu ile, daha önce kapatılmış olan soruların tekrar diriltilmesine ve insanların konuya tekrar katkıda bulunmasına izin verilmelidir.
Peter Teoh

Yanıtlar:


180

İdeal olarak:

  1. Projeyi çatalla
  2. Depoya bir veya daha fazla iyi yorumlanmış ve temiz taahhütte bulunun. Birden fazla parça veya özelliği değiştiriyorsanız, burada yeni bir şube oluşturabilirsiniz.
  3. Github'un web arayüzünde bir çekme isteği gerçekleştirin .

yeni bir Özellik isteği ise, önce kodlamayı başlatmayın. Yeni özelliği tartışmak için bir sorun yayınlamayı unutmayın.

Özellik iyi tartışılıyorsa ve +1 veya proje sahibi onayladıysa, sorunu kendinize atayın, ardından yukarıdaki adımları uygulayın.

Bazı projeler çekme talebi sistemini kullanmaz. Kodunuzu tekrar projeye geri getirmenin en iyi yolu için yazar veya posta listesine başvurun.



1
Evet, istek çekin. Birleştirme isteği zekice bir terminolojidir.
Yann Ramin

2
@MariusKavansky tam tersi! Ne üzerinde çalışacağınızı öğrendikten sonra, yalnızca katkıda bulunuyorsunuz :)
hashbrown

bazı açık kaynaklı projelere katkıda bulunduktan sonra. Yeni bir özellikse, yeni özelliği tartışmak için bir konu açmanın daha iyi bir fikir olduğunu düşünüyorum. İyi tartışılan bir özellik veya sorunsa, sorunu kendinize atamalısınız, ardından yukarıdaki adımları uygulayın. Bu benim 2 sentim.
wizztjh

@hashbrown, Şimdiye kadar istenen özelliklerin "listesinin" nerede olduğunu soruyor. Zaten talep edilen ve + 1'lenen özellikler.
Pacerier

31

Yann'ın cevabına eklemek için , bir projeyi çatalladıktan sonra, istediğiniz herhangi bir dalda (yeni bir tane veya orijinal projeden bir tane) geliştirebilirsiniz.

Hatırla:


1
ikinci noktanıza (yeniden basma dalı) ayrıntılar veya bağlantılar ekleyebilir misiniz ?
JorgeArtware

1
@JorgeArtware Cevabı rebase'i gösteren birkaç bağlantıyla güncelledim.
VonC

@VonC Burada bir soru soruyorum ama bunun gerekli olduğuna inanıyorsanız, bundan tamamen yeni bir soru yapacağım. Neden 'düz geçmişe' sahip olmak yerine, birleştirme yerine yeniden temellendireyim? Başka bir deyişle, bazı projelere katkıda bulunduğumda yaptığım şey (özellik branşımdaki halkla ilişkiler gelişmek ve branşları birleştirmek için birleştirildikten sonra): git checkout master; git pull;aynı geliştirme için (özellik branşımın ilk olarak birleştirildiği yer) Düşünebileceğim fark "pull vs pull --rebase" ve "merge vs rebase" okuduktan sonra sadece düz bir tarih. Daha derin bir şey var mı?
Şubat 17'de linuxbandit

@grasshopper "katkı" (bu sayfanın bağlamı) anlamında, itmeden önce her zaman güncel taahhütlerin üstünde yerel taahhütlerinizi yeniden oluşturmak istersiniz: bu, söz konusu katkıyı sürdürücü tarafından orijinal proje şubesine entegre etmek için önemsiz hale getirir. Halkla İlişkilerinizin kabul edildiği sorunuz bağlamında, mevcut şubeleri güncellemek için rebase yerine birleştirebilirsiniz.
VonC

(Üzgünüm kullanıcı adımı şimdi github'umu yansıtacak şekilde değiştirdi) - @VonC teşekkür ederim, bu yüzden rebase hakkında okuduğum tüm öneriler PR'dan önce geçerli, mantıklı. Kabul edilen ve birleştirilmiş Halkla İlişkileri yerel repoma yansıtmak için, ortak bir uygulama var mı (birleştirme yerine yeniden tabanlaştırma), yoksa ne yapabilirim? Yine de başka bir PR gönderirsem ne olur?
Şubat 17'de linuxbandit

15

Yan ve VonC'nin cevaplarına eklemek için, bu github'dan iyi bir kaynaktır: http://help.github.com/forking/

Ayrıca, "ortak çalışma" başlığı altındaki sağ kenar çubuğuna baktığınızdan emin olun.


10

Burada süreç boyunca size yol gösteren harika bir Railscast videosu var . Ayrıca, katkıda bulunurken, testler, alt modüller vb.

Bu screencast öncelikle Rails geliştiricilerine odaklanırken, bilgilerin çoğu herhangi bir açık kaynak projesine katkıda bulunmak için geçerlidir.


4

Github, bir projeyle işbirliği yapmanın birçok yoluna sahiptir. Çoğu proje kullanım modeli bir çekme talebi modelidir. İnsanların ilk GitHub çekme talebini yapmalarına yardımcı olmak için bir proje başlattım. İlk PR'nizi burada yapmak için uygulamalı öğreticiyi yapabilirsiniz

İş akışı aşağıdaki gibi basittir:

  • Repoyu github'da çatalla
  • Repo'yu makinenize kopyalayın
  • Şube yapın ve gerekli değişiklikleri yapın
  • GitHub'da değişikliklerinizi çatalınıza aktarın git push origin branch-name
  • Bir Compare and pull requestdüğme görmek için GitHub'daki çatalınıza gidin
  • Üzerine tıklayın ve gerekli ayrıntıları verin


2

Teknik iş akışı

Aşağıdaki iş akışını öneririm:

  1. Depoyu çatalla (GitHub web arayüzü üzerinden: "Çatal" düğmesi)
  2. Çatallı deponuza URL'yi kopyalayın
  3. Klonlama (komut satırında)

    git clone <url-from-your-workspace>

  4. Yeni oluşturulan dizini girin ve bir şube oluşturun

    cd <directory> git checkout -b <branchname>

  5. Şimdi değişikliklerinizi yapın

  6. Her değişiklikten sonra bir veya daha fazla taahhüt oluşturabilirsiniz:

    commit -a

  7. İşiniz bittiğinde değişikliklerinizi itin

    git push origin <branch>

  8. Komut satırınızda, PR oluşturmak için bir URL görmelisiniz . URL'yi ziyaret edin ve bir PR oluşturmak için düğmeyi tıklayın.

  9. Değilse, tarayıcıdaki havuzu ziyaret edin ve çekme isteğini oluşturmak için size bir düğme sunacaktır.

Bu kadar.

Yani, temel olarak, depoyu çalışma alanınıza çatalladınız, yeni bir şube oluşturdunuz ve o yeni dalı ittiniz.

Daha sonra aynı klonlanmış repodan daha fazla PR yaparsanız, başka bir PR için başka bir şube oluşturmadan önce senkronize etmelisiniz (orijinal depodaki en son değişiklikleri almalısınız):

git checkout master
git remote add upstream <url-of-original-repo>
git pull upstream master

Dikkat edilecek diğer noktalar:

  • projenin Katkı Yönergeleri olabilir: CONTRIBUTING.rst veya .md dosyasını arayın
  • proje için kodlama kurallarına uymak isteyebilirsiniz
  • önce fikrinizi sorun olarak özetlemek isteyebilirsiniz
  • proje için Çekme İstekleri sekmesine bakmak ve açık PR, birleştirilmiş PR olup olmadığını kontrol etmek isteyebilirsiniz

Bu öneriler sizi bir araya getirilmeyecek bir PR'ye çalışma zahmetinden kurtarmak için burada. Projede faaliyet varsa ve halkla ilişkiler birleştirilirse, bu iyi bir işarettir. Katkı İlkeleri varsa, bunları uygulayın.

Her zaman saygılı olun. Unutmayın, proje sahipleri hiçbir şekilde PR'nizi birleştirmek zorunda değildir. Projeye eklemek için değerli bir şey var mı?


1
İyi detaylı süreç (9 yaşındaki cevabımdan daha kesin). Upvoted.
VonC
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.