Saya ingin mengkloning repositori dari GitHub. Masalahnya adalah saya tidak menginginkan cabang utama; Saya ingin versi dalam permintaan penarikan yang tidak disetujui ini .
Apakah mungkin bagi saya untuk menggandakan versi permintaan penarikan alih-alih repositori utama?
git
github
pull-request
Fresheyeball
sumber
sumber
clone
tetapi untukfetch
melihat: stackoverflow.com/questions/6743514/…Jawaban:
Anda dapat mengkloning cabang yang Anda inginkan dengan menggunakan
-b
opsi dan untuk permintaan tarik:Dalam kasus Anda, cabang yang ingin Anda klon adalah cabang sumber dari pull request (
feature/mongoose-support
):sumber
Cara termudah untuk melakukannya adalah seperti ini:
Anda sekarang akan berada di cabang baru yang berada dalam status permintaan penarikan.
Anda mungkin ingin menyiapkan alias dengan menjalankan
Sekarang Anda dapat melakukan pembayaran PR apa pun dengan menjalankan
git pr <pr_number>
, ataugit pr <pr_number> <remote>
jika remote github Anda tidak bernamaorigin
.sumber
git fetch origin pull/<#>/head:<local_branch_name>
( via ).gitconfig
file di bawah[alias]
:pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. Dengan begitu saya hanya mengetikgit pr upstream 62
dan hal berikutnya yang saya tahu, saya berada di cabang baru PR # 62 dari hulu! Jika Anda selalu menggunakanorigin
Anda dapat melakukan hardcode alih-alih$1
, tetapi itu beralih untuk saya.co
misalnya:
Lakukan perubahan, lakukan, PUSH dan buka PR baru dari garpu Anda di GitHub
sumber
Anda dapat mengikuti petunjuk dalam inti ini untuk dapat memeriksa remote secara langsung tanpa harus mengetahui repositori dan cabangnya.
Contoh penggunaan
Untuk salah satu proyek saya (github3.py), saya memiliki yang berikut ini di file
github3.py/.git/config
Baris pertama adalah standar untuk setiap remote dengan pengecualian yang
github
diganti dengan nama remote. Artinya adalah bahwa remote head (atau kepala cabang di server itu) "dipetakan" ke remote lokal yang diawali olehgithub/
. Jadi jika saya melakukangit fetch github
dan memiliki cabang di GitHub yang belum melihat secara lokal pada komputer saya, itu akan men-download cabang dan saya bisa beralih ke itu seperti:git checkout -t github/branch_name
.Baris kedua melakukan hal yang sama, tetapi melakukannya untuk permintaan pull, bukan cabang git standar. Itu sebabnya kamu lihat
refs/pull/*/head
. Itu mengambil kepala dari setiap permintaan tarik di GitHub dan memetakannya kegithub/pr/#
. Jadi jika seseorang mengirim permintaan tarik dan diberi nomor 62 (misalnya), Anda akan melakukan:Dan kemudian Anda akan berada di cabang lokal yang dipanggil
pr/62
(dengan asumsi itu belum ada). Ini bagus dan berarti Anda tidak perlu melacak remote atau cabang orang lain.sumber
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
dari dokumen inti.git fetch github
Anda dapat melakukannyagit co -t github/pr/#
. Hal ini mencegah Anda dari keharusan untuk menyalin dan menempel URL jarak jauh, mencari tahu nama cabang, dll. Anda kemudian mendapatkan nama cabang yang tepat, ringkas dan akurat tanpa kerumitan tambahan. Tapi saya mengerti ini mungkin tampak luar biasa.Bagaimana cara mengambil permintaan penarikan yang tidak digabungkan untuk cabang yang tidak saya miliki?
sumber
git pull
membuat penggabungan menjadi cabang saat ini; biasanya untuk PR Anda hanyagit fetch
ingin mendapatkan kode penulis asli (kemudian dapat diakses sebagai FETCH_HEAD). Jika Anda memang menginginkan penggabungan, ada baiknya juga disebutkanpull/2/merge
(bukanpull/2/head
) - ini membuat GitHub memberi Anda komit penggabungan persis seperti yang akan terjadi jika Anda mengklik tombol [Gabung] sekarang.Ketika seorang pengguna mengirimkan permintaan tarik, mereka meminta beberapa perubahan untuk digabungkan dari cabang pada klon garpu mereka kembali ke repositori pengguna lain.
Perubahan yang Anda inginkan bisa didapatkan dari sumber pull request. Untuk melakukan ini, klon repositori pengguna (
git://github.com/berstend/frappe.git
), lalu periksa cabang tempat dia membuat permintaan tarik dari (feature/mongoose-support
).sumber
Setelah menginstal git-extras
Anda cukup menggunakan
git pr
sumber
Dengan antarmuka baris perintah baru resmi Github :
dimana
44
nomor PR, tapi bisa juga nama cabang.Lihat detail dan opsi tambahan serta petunjuk penginstalan .
sumber
Permintaan tarik tersebut menunjukkan komitmen dari garpu orang itu sehingga Anda dapat melihat bahwa dia mendorong perubahannya dari
feature/mongoose-support
cabang.Anda dapat mengkloning repositori dan memeriksa cabang itu
sumber
Bagi saya, itu sesederhana
Di mana
4
ditemukan di sini:sumber