Tarik permintaan tanpa garpu?

105

Berikut adalah langkah-langkah kontribusi kode dari topik " Bagaimana cara saya berkontribusi untuk kode orang lain di GitHub? "

  1. Buat proyek itu
  2. Buat satu atau lebih komit yang baik dan bersihkan komitmen 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.

Apakah mungkin membuat pull request tanpa melakukan forking repo?

Sangat menyedihkan melihat lebih dari 20 repo di akun saya yang bercabang untuk beberapa permintaan tarik. Mereka tidak memiliki aktivitas saat itu dan nol bintang / pengikut. Sepertinya saya hanya menyalin kode seseorang untuk hari yang kelam.

Jasper
sumber
Mengapa Anda ingin?
3
Pertanyaan bagus. Juga tidak jelas untuk memperbarui 20 repo tersebut dengan aslinya (atau menghapusnya).
Corey Alix

Jawaban:

95

Jika Anda tidak memiliki akses untuk membuat cabang di repositori itu, tidak ada cara untuk membuat permintaan tarik tanpa forking .

Ryan Bigg
sumber
8
Bisakah Anda menjelaskan bagaimana Anda dapat membuat permintaan tarik jika Anda TIDAK memiliki akses ke cabang di repositori itu?
bolinfest
13
GitHub memiliki panduan yang bagus tentang itu: help.github.com/articles/creating-a-pull-request
Ryan Bigg
2
Hanya pengingat untuk sesuatu yang mungkin tidak begitu jelas bagi semua orang. Anda perlu membuat fork untuk setiap repositori yang Anda kontribusikan ... tetapi membuat cabang di fork Anda memungkinkan Anda untuk mengerjakan satu lebih dari satu PR sekaligus untuk repo upstream. Anda tidak perlu 20 garpu dari repo yang sama untuk berkontribusi dengan 20 PR.
JulioHM
24

Setelah permintaan tarik Anda diterima, Anda dapat menghapus repo dengan aman .

Setelah itu, cukup kloning langsung dari repo upstream asli.

Jika Anda memiliki permintaan penarikan lain, Anda harus membuatnya di cabangnya masing-masing, yang berarti Anda dapat dengan aman menghapus cabang yang Anda buat untuk mengelola permintaan penarikan yang diterima (seperti dalam " Permintaan penarikan saya telah digabungkan, apa yang harus dilakukan selanjutnya? ")

VonC
sumber
2
FYI, github baru-baru ini menambahkan tombol untuk menggabungkan permintaan tarik untuk membuatnya mudah (dan intuitif) untuk menghapus cabang permintaan tarik: github.com/blog/1335-tidying-up-after-pull-requests
David M
10

Menurut definisi, permintaan pull melibatkan sebuah fork kecuali Anda memiliki akses komit ke repositori tujuan. Anda dapat melakukan beberapa hal:

  1. Jika Anda tidak memiliki akses komit, membuat cabang dan membuat permintaan tarik Anda terhadap cabang baru.
  2. Posting tambalan Anda di badan masalah. Ini sebenarnya bukan cara GitHub, tetapi pasti berhasil.
  3. Buat garpu repositori, buat permintaan tarik, lalu hapus garpu setelah permintaan tarik digabungkan atau ditolak.

Jika Anda hanya mencoba untuk menghindari penyimpanan di sekitar yang tidak Anda gunakan secara aktif, saya pribadi menyarankan opsi # 3. Itu menempel pada alur kerja GitHub yang diterima tanpa mengacaukan dasbor Anda.

Todd A. Jacobs
sumber
Mungkin paling baik diletakkan di sini: 4. Pertahankan akun Github kedua hanya untuk menangani skenario tarik-permintaan-dan-lupakan ini. Tidak masalah jika akun itu memiliki 20 repo tidak aktif di dalamnya, karena ini bukan akun utama.
tanius
7

github mendukung Model Repositori Bersama

Model Repositori Bersama lebih lazim dengan tim kecil dan organisasi yang berkolaborasi dalam proyek pribadi. Setiap orang diberikan akses push ke satu repositori bersama dan cabang topik digunakan untuk mengisolasi perubahan.

Permintaan tarik sangat berguna dalam Model Fork & Pull karena menyediakan cara untuk memberi tahu pengelola proyek tentang perubahan di fork Anda. Namun, mereka juga berguna dalam Shared Repository Model di mana mereka digunakan untuk memulai peninjauan kode dan diskusi umum tentang sekumpulan perubahan sebelum digabungkan menjadi cabang jalur utama.

Ya Zhuang
sumber
5
Perhatikan bagaimana ini tidak menjelaskan cara membuat permintaan tarik dalam model ini.
bolinfest
0

Anda masih membutuhkan satu baris itu: hub fork;git push -u $GIT_USER HEAD;hub pull-request

Anona112
sumber