Saya mencoba meninjau permintaan tarik pada GitHub ke cabang yang bukan master. Cabang target berada di belakang master dan permintaan tarikan menunjukkan komit dari master, jadi saya menggabungkan master dan mendorongnya ke GitHub, tetapi komit dan diff untuk mereka masih muncul dalam permintaan tarikan setelah menyegarkan. Saya telah menggandakan memeriksa bahwa cabang di GitHub memiliki komit dari master. Mengapa mereka masih muncul dalam permintaan tarik?
Saya juga telah memeriksa permintaan tarik secara lokal dan itu hanya menunjukkan komitmen yang tidak digabungkan.
Jawaban:
Sepertinya Permintaan Tarik tidak melacak perubahan ke cabang target (saya menghubungi dukungan GitHub, dan menerima respons pada 18 November 2014 yang menyatakan ini sesuai desain).
Namun, Anda bisa menampilkan perubahan yang diperbarui dengan melakukan hal berikut:
Ganti
githuburl
,org
,repo
,targetbranch
, dancurrentbranch
sesuai kebutuhan.Atau seperti yang ditunjukkan hexsprite dalam jawabannya, Anda juga dapat memaksanya untuk memperbarui dengan mengklik EditPR dan untuk sementara mengubah basis menjadi cabang yang berbeda dan kembali lagi. Ini menghasilkan peringatan:
Dan akan meninggalkan dua entri log di PR:
sumber
Ini solusi yang bagus. Gunakan
Edit
tombol saat melihat PR di GitHub untuk mengubah cabang dasar ke sesuatu selainmaster
. Kemudian alihkan kembalimaster
dan sekarang hanya akan menunjukkan perubahan dari komit terbaru.sumber
Singkatnya, GitHub tidak mengubah riwayat komit secara otomatis dalam permintaan tarik. Solusi paling sederhana adalah:
Solusi 1: Rebase
Misalkan Anda ingin bergabung
master
darifeature-01
:Jika Anda mengerjakan garpu maka Anda mungkin perlu mengganti
origin
denganupstream
. Lihat Bagaimana cara saya memperbarui repositori bercabang GitHub? untuk mempelajari lebih lanjut tentang pelacakan cabang jauh dari repositori asli.Solusi 2: Buat permintaan tarik baru
Misalkan Anda ingin menggabungkan intro
master
darifeature-01
:Sekarang buka permintaan tarik untuk
feature-01-rebased
dan tutup satu untukfeature-01
.sumber
Anda perlu menambahkan yang berikut ke
~/.gitconfig
file Anda :Ini akan secara otomatis mencapai yang sama dengan apa yang ditunjukkan oleh jawaban ini .
Saya mendapat ini dari sini .
sumber
Bagi siapa pun yang menemukan ini dan bingung dengan perilaku Permintaan Tarik GitHub, penyebab dasarnya adalah bahwa PR adalah beda ujung cabang sumber terhadap leluhur umum dari cabang sumber dan cabang target. Karena itu ia akan menampilkan semua perubahan pada cabang sumber hingga leluhur yang sama dan tidak akan memperhitungkan perubahan apa pun yang mungkin terjadi pada cabang target.
Informasi lebih lanjut tersedia di sini: https://developer.atlassian.com/blog/2015/01/a-better-pull-request/
Difs berbasis leluhur umum tampaknya berbahaya. Saya berharap GitHub memiliki opsi untuk membuat PR berbasis penggabungan 3-arah yang lebih standar.
sumber
Salah satu cara untuk memperbaikinya adalah dengan
git rebase targetbranch
menggunakan PR itu. Lalugit push --force targetbranch
, maka Github akan menunjukkan commit yang tepat dan diff. Hati-hati dengan ini jika Anda tidak tahu apa yang Anda lakukan. Mungkin checkout cabang tes pertama untuk melakukan rebase kemudiangit diff targetbranch
untuk memastikan itu masih apa yang Anda inginkan.sumber
Ini terjadi dengan GitHub ketika squash Anda melakukan merger dari cabang target.
Saya telah menggunakan squash and merge dengan Github sebagai strategi penggabungan default, termasuk penggabungan dari cabang target. Ini memperkenalkan komit baru dan GitHub tidak menyadari bahwa komit tergencet ini sama dengan komit yang sudah ada di master (tetapi dengan hash yang berbeda). Git menanganinya dengan benar tetapi Anda melihat semua perubahan lagi di GitHub, membuatnya menjengkelkan untuk ditinjau. Solusinya adalah dengan melakukan gabungan rutin dari komitmen hulu ini alih-alih squash dan gabungan. Ketika Anda ingin menggabungkan cabang lain menjadi cabang Anda sebagai dependensi,
git merge --squash
dan kembalikan komit tunggal itu sebelum menarik dari master begitu cabang lain benar-benar membuatnya untuk dikuasai.EDIT: solusi lain adalah rebase dan memaksa push. Riwayat bersih tapi ditulis ulang
sumber
Saya tidak begitu yakin tentang teori di balik ini. Tetapi saya mendapatkan ini beberapa kali dan dapat memperbaikinya dengan melakukan hal berikut.
Ini akan mengambil dan menggabungkan perubahan dari cabang master repo asli Anda (Jika Anda memiliki maksud untuk itu)
Kemudian Anda mendorong perubahan Anda dengan paksa ke repositori github Anda (target)
Ini akan memastikan klon github Anda dan repo orang tua Anda berada pada tingkat komit github yang sama dan Anda tidak melihat perubahan yang tidak perlu di seluruh cabang.
sumber
Coba perintah di bawah ini, satu per satu.
sumber
Gagal pendekatan yang aman jika Anda terlalu khawatir tentang mengacaukan segalanya: buka file dan hapus perubahan secara manual, lalu hancurkan dengan komit terakhir Anda menggunakan
Saya tidak ada konflik, Anda baik untuk pergi!
sumber