Permintaan penarikan saya telah digabungkan, apa yang harus dilakukan selanjutnya?

112

Saya baru-baru ini berpartisipasi dalam proyek dari GitHub. Saya melakukan hal berikut:

Mem-fork repositori asli, mengkloningnya ke mesin lokal saya, membuat cabang untuk memperbaiki bug yang ada, memperbaiki bug yang ada di cabang itu, mendorong cabang itu ke repo saya, mengirim permintaan tarik ke penulis repositori untuk menggabungkan cabang perbaikan saya ke cabang utamanya.

Ini adalah pertama kalinya saya membuat komitmen pada kode orang lain jadi saya tidak tahu harus berbuat apa. Sekarang permintaan tarik saya telah digabungkan ke repo / proyek asli oleh penulis.

Apa yang harus saya lakukan selanjutnya? Haruskah saya menghapus cabangnya? Haruskah saya menggabungkan cabang? Ada yang lain?


Informasi tambahan:

Proyek asli memiliki satu cabang.

Saya juga memiliki set upstream untuk mendapatkan update terbaru dari repo asli. (Saya melakukannya seperti ini) :

git remote add upstream https://path/to/original/repo.git

Dan saya mendapatkan pembaruan seperti ini:

git fetch upstream
Santosh Kumar
sumber
12
Ghehe, Anda bukan satu-satunya yang kesulitan: Video Youtube :)
Anne

Jawaban:

65

Apa yang harus dilakukan selanjutnya adalah: memberikan kontribusi fitur baru atau memperbaiki bug lain di cabang khusus mereka sendiri (didorong hanya ke garpu Anda).

Artinya garpu Anda tetap ada, tetapi cabang di dalam garpu Anda bisa datang dan pergi.

Anda juga dapat menghapus garpu jika tidak berencana untuk berkontribusi lebih lanjut, tetapi ini akan menghapus entri terkait di 'Repositori tempat Anda berkontribusi' .

Lebih mudah untuk:

  • hapus fixcabang Anda (sebenarnya, sekarang sudah dihapus untuk Anda ) di garpu Anda (dan di repo kloning lokal Anda: lihat " Menghapus cabang Git baik secara lokal maupun jarak jauh ")
  • git pull upstream master(jika mastermerupakan cabang di mana perbaikan Anda telah terintegrasi: penggabungan akan menjadi yang maju cepat): tidak diperlukan rebase pada saat ini.
  • buat ulang cabang perbaikan di atas lokal Anda yang diperbarui master(sekarang dengan yang terbaru dari upstream master).

Namun, jangan pernah melupakan satu langkah pun sebelum mengirimkan pull request apa pun di masa mendatang :

rebase dulu cabang Anda saat ini ( fix) dari cabang tujuan hulu

( upstreammenjadi repo asli Anda bercabang: lihat " Apa perbedaan antara origin dan upstream di github ")

Sebelum mengirimkan apa pun kembali ke repo asli ("upstream"), Anda perlu memastikan bahwa pekerjaan Anda didasarkan pada yang terbaru dari repo asli tersebut (atau pull-request tidak akan menghasilkan penggabungan maju cepat setelah diterapkan kembali ke upstreamrepo).
Lihat, misalnya, " Alur kerja untuk mengelola permintaan pull pada repositori bersama di github ".

Dengan kata lain, upstreamdapat berkembang (memiliki komitmen baru yang mendorongnya) saat Anda sibuk memperbaiki sesuatu. Anda perlu mengulang perbaikan Anda di atas pekerjaan terbaru dari hulu untuk memastikan komit Anda masih kompatibel dengan yang terbaru upstream.


The OP Santosh Kumar meminta di komentar :

Saya telah menarik dan bergabung dari upstreammenjadi master, sekarang apa?

Jika Anda belum membuat perbaikan baru sejak pull request baru-baru ini, lihat di atas (hapus dan buat ulang cabang baru fixdi atas pembaruan Anda master).

Jika Anda telah melakukan pekerjaan lagi sejak permintaan penarikan Anda, saya tidak akan menggabungkan dari upstreamjika saya ingin membuat permintaan penarikan baru : Saya akan menarik dan mengubah basis :

git pull --rebase upstream master

Dengan cara itu, semua pekerjaan lokal baru saya diputar ulang di atas upstream masterkomit terbaru (diambil di repo lokal saya), anggaplah itu masteradalah cabang target yang akan mengintegrasikan permintaan penarikan saya di masa mendatang.

Kemudian saya dapat mendorong pekerjaan lokal saya ke ' origin', yang merupakan cabang saya di GitHub dari upstream.
Dan dari garpu saya di GitHub, saya dapat dengan aman membuat permintaan tarik, mengetahui bahwa itu hanya akan menambah komitmen baru upstreamtanpa memerlukan resolusi penggabungan: menggabungkan komit baru itu dalam upstreamrepo akan berarti penggabungan maju cepat yang sederhana.


A git pull --rebasetanpa menentukan cabang di atasnya yang ingin Anda rebase, fixcabang Anda (saat ini diperiksa) tidak akan berfungsi:

Itu ( git pull --rebase) mengatakan:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

Haruskah saya menambahkan master pada akhirnya? Dan apa yang akan dilakukannya ?, apakah ini akan menghapus fixcabang saya ?

Ya, Anda dapat menentukan cabang yang akan menjadi target permintaan penarikan, misalnya ' master'.
Itu tidak akan menghapus fixcabang Anda , tetapi akan memutarnya di atas upstream yang masterdiambil di repo Anda.

VonC
sumber
Bisakah Anda menjelaskan rebase dari bagian hulu ?
Santosh Kumar
@SantoshKumar Anda perlu me-rebase komit lokal Anda di atas repo asli (di sini direferensikan sebagai upstream) sebelum mendorong ke fork Anda dan membuat permintaan tarik Anda: lihat stackoverflow.com/questions/9257533/…
VonC
Ya, saya tahu saya menanyakan pertanyaan dasar . Saya telah menarik dan bergabung dari hulu ke master, sekarang apa?
Santosh Kumar
@SantoshKumar itu adalah pertanyaan yang bagus. Saya telah mengedit jawaban untuk mengatasinya. Cari "OP Santosh Kumar bertanya di komentar: ..."
VonC
Yang mengatakan: You asked to pull from the remote 'upstream', but did not specify a branch.Haruskah saya menambahkan masterakhirnya? Dan apa yang akan dilakukannya ?, apakah ini akan menghapus cabang perbaikan saya ?
Santosh Kumar
18

Pertama, selamat atas kontribusi pertama Anda untuk sebuah proyek di Github.

Alur kerja Github yang biasa adalah membuat cabang baru untuk setiap masalah yang Anda selesaikan. Dengan begitu, pengelola repositori jalur utama dapat memutuskan solusi mana yang akan Anda gabungkan dan mana yang akan ditolak. Setelah cabang digabungkan ke hulu, cabang tersebut tidak diperlukan lagi dan biasanya dapat dihapus.

Philipp
sumber