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
:)
Jawaban:
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:
fix
cabang 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
(jikamaster
merupakan cabang di mana perbaikan Anda telah terintegrasi: penggabungan akan menjadi yang maju cepat): tidak diperlukan rebase pada saat ini.master
(sekarang dengan yang terbaru dariupstream 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(
upstream
menjadi 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
upstream
repo).Lihat, misalnya, " Alur kerja untuk mengelola permintaan pull pada repositori bersama di github ".
Dengan kata lain,
upstream
dapat 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 terbaruupstream
.The OP Santosh Kumar meminta di komentar :
Jika Anda belum membuat perbaikan baru sejak pull request baru-baru ini, lihat di atas (hapus dan buat ulang cabang baru
fix
di atas pembaruan Andamaster
).Jika Anda telah melakukan pekerjaan lagi sejak permintaan penarikan Anda, saya tidak akan menggabungkan dari
upstream
jika saya ingin membuat permintaan penarikan baru : Saya akan menarik dan mengubah basis :Dengan cara itu, semua pekerjaan lokal baru saya diputar ulang di atas
upstream
master
komit terbaru (diambil di repo lokal saya), anggaplah itumaster
adalah 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 dariupstream
.Dan dari garpu saya di GitHub, saya dapat dengan aman membuat permintaan tarik, mengetahui bahwa itu hanya akan menambah komitmen baru
upstream
tanpa memerlukan resolusi penggabungan: menggabungkan komit baru itu dalamupstream
repo akan berarti penggabungan maju cepat yang sederhana.A
git pull --rebase
tanpa menentukan cabang di atasnya yang ingin Anda rebase,fix
cabang Anda (saat ini diperiksa) tidak akan berfungsi:Ya, Anda dapat menentukan cabang yang akan menjadi target permintaan penarikan, misalnya '
master
'.Itu tidak akan menghapus
fix
cabang Anda , tetapi akan memutarnya di atas upstream yangmaster
diambil di repo Anda.sumber
You asked to pull from the remote 'upstream', but did not specify a branch.
Haruskah saya menambahkanmaster
akhirnya? Dan apa yang akan dilakukannya ?, apakah ini akan menghapus cabang perbaikan saya ?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.
sumber