Bagaimana saya berkontribusi pada kode orang lain di GitHub? [Tutup]

231

Saya ingin berkontribusi pada proyek tertentu di GitHub . Haruskah saya membayarnya ? Cabang itu? Apa yang direkomendasikan dan bagaimana melakukannya?

wizztjh
sumber
61
Langkah konyol lainnya
stephen
4
Saya menulis panduan langkah demi langkah yang lebih rinci tentang berkontribusi pada Concrete5 di Github, tetapi prosesnya dapat diterapkan pada proyek apa pun. Lihat itu .
Joe Meyer
7
Saya tidak benar-benar melihat ini 'tidak konstruktif'. Pilihan dan pandangan saja memberikan bukti bahwa ini adalah pertanyaan populer yang ingin dijawab orang.
Ian
1
mungkin dengan pemungutan suara mayoritas yang cukup, pertanyaan yang sebelumnya ditutup harus dibiarkan dibangkitkan kembali, dan biarkan orang berkontribusi pada utas lagi.
Peter Teoh

Jawaban:

180

Idealnya Anda:

  1. Garap proyek
  2. Buat satu atau lebih komentar yang baik dan bersihkan komit ke repositori. Anda dapat membuat cabang baru di sini jika Anda memodifikasi lebih dari satu bagian atau fitur.
  3. Lakukan permintaan tarik di antarmuka web github.

jika ini adalah permintaan Fitur baru, jangan mulai pengkodean terlebih dahulu. Ingatlah untuk mengirim masalah untuk membahas fitur baru.

Jika fitur tersebut didiskusikan dengan baik dan ada beberapa +1 atau pemilik proyek yang menyetujuinya, tetapkan masalahnya sendiri, kemudian lakukan langkah-langkah di atas.

Beberapa proyek tidak akan menggunakan sistem permintaan tarik. Periksa dengan penulis atau milis tentang cara terbaik untuk mendapatkan kode Anda kembali ke proyek.

Yann Ramin
sumber
4
Rincian pada GitHub ini forking , dan tarik permintaan
Gabriel Hibah
1
Ya, tarik permintaan. Menggabungkan permintaan adalah terminologi yang agung.
Yann Ramin
2
@MariusKavansky sebaliknya! Setelah Anda tahu apa yang harus dikerjakan, maka hanya Anda yang berkontribusi :)
hashbrown
setelah saya berkontribusi pada beberapa proyek open source. Saya pikir itu adalah ide yang lebih baik untuk membuka masalah untuk membahas fitur baru jika itu adalah fitur baru. Jika ini adalah fitur atau masalah yang dibahas dengan baik, Anda harus menetapkan sendiri masalah tersebut lalu lakukan langkah-langkah di atas. Ini adalah 2 sen saya.
wizztjh
@ hashbrown, Dia bertanya di mana "daftar" fitur yang diminta sejauh ini. Fitur-fitur yang sudah diminta dan diberi +1.
Pacerier
31

Untuk menambah jawaban Yann , setelah Anda melakukan forked proyek, Anda dapat mengembangkan di cabang mana pun yang Anda inginkan (yang baru, atau satu dari proyek asli)

Ingat untuk:

VONC
sumber
1
dapatkah Anda menambahkan detail atau tautan pada poin kedua Anda (cabang rebasing) ?
JorgeArtware
1
@JorgeArtware Saya telah memperbarui jawabannya dengan beberapa tautan yang menggambarkan rebase.
VonC
@VonC Saya mengajukan pertanyaan di sini, tetapi jika Anda yakin itu perlu, saya akan membuat pertanyaan baru darinya. Mengapa saya harus rebase bukan bergabung, selain memiliki 'sejarah lurus'? Dengan kata lain, inilah yang saya lakukan ketika saya berkontribusi pada beberapa proyek (setelah PR dari cabang fitur saya digabung untuk mengembangkan dan menguasai cabang): git checkout master; git pull;sama untuk mengembangkan (di mana cabang fitur saya digabung dulu) Perbedaan yang dapat saya pikirkan dari, setelah membaca "pull vs pull --rebase" dan "merge vs rebase" hanyalah sejarah datar. Ada lagi yang lebih dalam?
linuxbandit
@grasshopper dalam istilah "kontribusi" (konteks halaman ini), Anda selalu ingin mengubah kembali komitmen lokal Anda di atas cabang yang diperbarui sebelum mendorong: yang akan membuat kontribusi kontribusi tersebut sepele untuk diintegrasikan oleh pengelola ke cabang proyek asli. Dalam konteks pertanyaan Anda, di mana PR Anda telah diterima, tentu saja, Anda dapat menggabungkan alih-alih rebase untuk memperbarui cabang yang ada.
VonC
(Maaf mengubah nama pengguna sekarang untuk mencerminkan github saya) - @VonC terima kasih, jadi semua saran yang saya baca tentang rebase berlaku sebelum PR, masuk akal. Untuk mencerminkan PR yang diterima dan digabungkan dalam repo lokal saya, apakah ada praktik umum (rebase bukan penggabungan), atau bisakah saya melakukan apa saja? Bagaimana jika saya akan mengirimkan PR lain?
linuxbandit
15

Untuk menambah jawaban Yan dan VonC, ini adalah sumber yang bagus dari github sendiri: http://help.github.com/forking/

Pastikan juga untuk melihat bilah sisi kanan di bawah tajuk "kolaborasi".

brycemcd
sumber
10

Ada video Railscast yang luar biasa di sini yang memandu Anda melalui prosesnya. Ini juga memiliki sejumlah tips bagus seperti menunjukkan cara menentukan cabang mana yang mungkin ingin Anda kerjakan saat berkontribusi, menggunakan tes, submodul, dll.

Sementara screencast ini terutama difokuskan pada pengembang Rails, sebagian besar informasi valid untuk berkontribusi pada proyek open source.

Foto
sumber
4

Github memiliki banyak cara untuk berkolaborasi dengan suatu proyek. Model yang paling banyak digunakan proyek adalah model permintaan tarik. Saya telah memulai sebuah proyek untuk membantu orang-orang membuat permintaan tarik GitHub pertama mereka. Anda dapat melakukan tutorial praktis untuk membuat PR pertama di sini

Alur kerjanya sederhana seperti

  • Garpu repo di github
  • Kloning repo ke mesin Anda
  • Buat cabang dan buat perubahan yang perlu
  • Dorong perubahan Anda ke fork Anda di GitHub git push origin branch-name
  • Buka garpu Anda di GitHub untuk melihat Compare and pull requesttombol
  • Klik di atasnya dan berikan detail yang diperlukan
sudo bangbang
sumber
2

Alur kerja teknis

Saya akan menyarankan alur kerja berikut:

  1. Fork repositori (melalui antarmuka web GitHub: tombol "Fork")
  2. Di repositori bercabang Anda, salin URL
  3. Klon (di baris perintah)

    git clone <url-from-your-workspace>

  4. Masukkan direktori, yang baru saja dibuat, dan buat cabang

    cd <directory> git checkout -b <branchname>

  5. Sekarang lakukan perubahan Anda

  6. Anda dapat membuat satu atau beberapa komitmen setelah setiap perubahan:

    commit -a

  7. Setelah selesai, dorong perubahan Anda

    git push origin <branch>

  8. Di baris perintah Anda, Anda akan melihat URL untuk membuat PR . Kunjungi URL dan klik tombol untuk membuat PR.

  9. Jika tidak, kunjungi repositori di browser dan itu akan menawarkan Anda tombol untuk membuat permintaan tarikan

Itu dia.

Jadi, pada dasarnya, Anda bercabang repositori ke ruang kerja Anda, membuat cabang baru dan mendorong cabang baru itu.

Jika nanti Anda membuat lebih banyak PR dari repo kloning yang sama, Anda harus melakukan sinkronisasi (dapatkan perubahan terbaru dari repositori asli) sebelum Anda membuat cabang lain untuk PR lain:

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

Pertimbangan lain:

  • proyek mungkin memiliki Pedoman Kontribusi: Cari file CONTRIBUTING.rst atau .md
  • Anda mungkin ingin mengikuti pedoman pengkodean untuk proyek tersebut
  • Anda mungkin ingin menjabarkan ide Anda sebagai masalah terlebih dahulu
  • Anda mungkin ingin melihat tab Tarik Permintaan untuk proyek dan memeriksa apakah ada PR terbuka, PR gabungan

Saran-saran ini ada di sini untuk menyelamatkan Anda dari kesulitan memasukkan pekerjaan ke dalam PR yang tidak akan digabungkan. Jika ada aktivitas dalam proyek dan PR bergabung, ini pertanda baik. Jika ada Pedoman Kontribusi, ikuti mereka.

Selalu sopan. Ingat, pengelola proyek sama sekali tidak berkewajiban untuk menggabungkan PR Anda. Apakah Anda memiliki sesuatu yang berharga untuk ditambahkan ke proyek?

Sybille Peters
sumber
1
Proses terperinci dengan baik (lebih tepat daripada jawaban saya yang berumur 9 tahun). Terpilih.
VonC