Permintaan tarik masuk ke repo saya yang dihosting di Github. Secara default, ini digabungkan ke dalam master
cabang.
Apakah ada cara bagi saya untuk mengubah cabang tempat perubahan akan digabungkan?
Permintaan tarik masuk ke repo saya yang dihosting di Github. Secara default, ini digabungkan ke dalam master
cabang.
Apakah ada cara bagi saya untuk mengubah cabang tempat perubahan akan digabungkan?
Jawaban:
Mulai 15.08.2016 GitHub memungkinkan mengubah cabang target dari permintaan penarikan melalui GUI. Klik di Edit
samping judul, lalu pilih cabang dari menu drop-down.
Anda sekarang dapat mengubah cabang dasar dari permintaan tarik terbuka. Setelah Anda membuat permintaan tarik, Anda dapat memodifikasi cabang dasar sehingga perubahan dalam permintaan tarik dibandingkan dengan cabang yang berbeda. Dengan mengubah cabang dasar dari permintaan penarikan asli Anda daripada membuka yang baru dengan cabang dasar yang benar, Anda akan dapat menyimpan pekerjaan dan diskusi yang berharga.
Pengirim dapat mengubahnya ketika mereka mengeluarkan permintaan penarikan, tetapi setelah mereka mengeluarkannya, Anda tidak dapat mengubahnya.
Di sisi lain, Anda dapat menggabungkan cabang dan push secara manual, yang saya lakukan secara semi-rutin untuk permintaan tarik yang salah sasaran.
Anda mungkin menemukan hub
permata itu membantu dalam bekerja dengan komponen permintaan tarik.
Permata itu membungkus proses manual, yaitu:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
git merge --no-ff ...
seperti yang disebutkan @GuillermoMansilla dalam jawabannya.
Alternatif untuk menggunakan permata hub yang disebutkan oleh jawaban lain adalah dengan menggunakan baris perintah untuk menggabungkan permintaan penarikan secara lokal , yang memungkinkan Anda untuk melakukan:
$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*
Perintah di atas hanya berfungsi secara langsung jika Anda menambahkan baris berikut ke .git/config
file Anda terlebih dahulu :
fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*
Apa yang dilakukannya adalah memungkinkan Anda mengunduh SEMUA permintaan tarik. Karena itu mungkin tidak diinginkan untuk repositori besar, GitHub memodifikasi instruksi untuk menampilkan git fetch origin pull/ID/head:BRANCHNAME
sintaks, yang menghindari modifikasi file konfigurasi dan hanya mengunduh permintaan tarik tunggal itu.
Meskipun Anda tidak dapat mengubah permintaan pull yang ada karena itu bukan milik Anda, Anda dapat dengan mudah membuat yang baru jika repositori sumber terkait masih ada - ya, meskipun itu milik orang lain.
Pergi ke repositori pengirim kemudian buat permintaan tarik baru di repositori mereka menggunakan komit yang sama tetapi pastikan Anda menyetel cabang target yang benar dengan benar.
Kemudian kembali ke repositori Anda sendiri dan terima permintaan penarikan baru. Voila!
Tidak ada yang salah dengan solusi Daniel Pittman, namun saya akan memperlakukan penggabungan tersebut sebagai "no fast forward", yaitu mengubah langkah nomor 3 untuk:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
Dengan menggunakan --no-ff
, history akan lebih mudah dibaca. Ini akan dengan jelas mengatakan bahwa $n
komitmen itu berasal $branch
, dan itu juga akan membuat hidup Anda lebih mudah jika Anda perlu mengembalikan sesuatu yang dilakukan di cabang itu.
Untuk juga menjawab pertanyaan eoinoc dan memberikan tip tambahan:
Setelah melakukan penggabungan, git cli Anda akan meminta Anda untuk menulis pesan, biasanya pesan umum akan muncul mengatakan sesuatu seperti
Gabungkan cabang pelacakan jarak jauh 'pengguna / cabang mereka' ke dalam cabang Anda
Pastikan untuk mengedit pesan itu dan menyertakan referensi ke nomor permintaan pull. Yaitu: (Dengan asumsi nomor permintaan penarikan adalah 123)
Gabungkan cabang pelacakan jarak jauh 'pengguna / cabang mereka' ke dalam cabang Anda
referensi # 123 memecahkan apa pun ...
Jadi lain kali Anda mengunjungi halaman masalah github / permintaan tarik dan memeriksa permintaan tarik tertentu itu, Anda akan melihat pesan Anda dengan tautan untuk melakukan di mana Anda melakukan penggabungan.
Ini screenshot yang saya maksud.
Untuk melakukan itu pergi ke halaman rumah repositori Anda, klik pada cabang, dan ubah cabang default dari master menjadi sesuatu yang lain, dalam kasus saya "dev".
Setelah itu, setiap kali seseorang membuat permintaan tarik, merge
tombol secara otomatis akan menggabungkan permintaan tersebut menjadi "dev" daripada master.