Bisakah Anda mengeluarkan permintaan tarik dari baris perintah di GitHub?


298

Sepertinya Anda harus berinteraksi dengan github.com untuk memulai permintaan tarik. Benarkah begitu?


2
Saya tidak melihat apa pun di API mereka untuk melakukan permintaan tarikan: develop.github.com
Adam Vandenberg


1
Sistem operasi apa yang ingin Anda lakukan ini?
IgorGanapolsky

Bagaimana melakukan ini di Windows 8 atau 10?
Mathivanan KP

Saya membuat skrip bash untuk ini, jika ada yang tertarik.
mvr

Jawaban:


114

PEMBARUAN : Perintah hub sekarang merupakan proyek github resmi dan juga mendukung pembuatan permintaan tarikan

ASLI :

Sepertinya hal yang sangat berguna untuk ditambahkan ke perintah hub: http://github.com/defunkt/hub atau permata github: http://github.com/defunkt/github-gem

Saya sarankan mengajukan masalah dengan proyek-proyek yang memintanya. Para github cukup responsif.


8
The github-permata termasuk fasilitas untuk membuat permintaan tarik untuk usia: gh pull-request [user] [branch].
Holger Just

6
Apakah ini berhasil tanpa Github mem-fork repo terlebih dahulu, yaitu dari klon langsung dari sumber repo?
Hari Karam Singh

1
@ Holger Just dan siapa pun: Itu hanya membuat teks permintaan tarik dan tidak memotong kebutuhan untuk garpu on-Github. Saya belum menemukan jalan keluar untuk itu. Saya bermaksud untuk mencoba utilitas 'pullr' yang diposting di bawah ini segera. Lihat di sini untuk masalah orang yang meminta dukungan tarik-permintaan penuh dari github-gem.
mateor

1
untuk perintah cepat menggunakan hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana

Tidak tahu mengapa itu tidak disebutkan dalam dokumen di atas, tetapi untuk penggabungan permintaan tarik cepat, lakukan checkout pada cabang master Andahub merge https://github.com/repo/pull/1
holmberd

53

Git sekarang dikirimkan dengan sub-perintah 'git request-pull' [-p] <start> <url> [<end>]

Anda dapat melihat dokumen di sini

Anda mungkin menemukan ini berguna tetapi tidak persis sama dengan fitur GitHub .


7
@NathanBasanese Ini menghasilkan teks yang bisa dibaca manusia yang menggambarkan permintaan tarik. The docs git dan GitHub buku katakanlah ke e-mail ini ke pengelola proyek, seseorang dengan menulis hak istimewa pada repo bersama (mungkin github). Sang pengelola meninjau teks permintaan-tarik yang Anda kirim (daripada menggunakan proses permintaan-tarik online github). Mereka dapat melakukan sebagian git pullurl dan cabang yang ditunjukkan dalam permintaan tarik Anda untuk menggabungkan perubahan Anda ke klon lokal mereka dan mendorong perubahan ini ke github.
Hobs

30

Dengan pembungkus baris perintah Hub Anda dapat menautkannya ke git dan kemudian Anda dapat melakukannya git pull-request

Dari halaman manual hub:

   git pull-request [-f] [TITLE|-i ISSUE|ISSUE-URL] [-b BASE] [-h HEAD]
          Opens a pull request on GitHub for the project that the "origin" remote points to. The default head of the pull request is the current branch. Both base and head of the pull request can be explicitly given in one  of  the  following  formats:  "branch",  "owner:branch",
          "owner/repo:branch". This command will abort operation if it detects that the current topic branch has local commits that are not yet pushed to its upstream branch on the remote. To skip this check, use -f.

          If TITLE is omitted, a text editor will open in which title and body of the pull request can be entered in the same manner as git commit message.

          If instead of normal TITLE an issue number is given with -i, the pull request will be attached to an existing GitHub issue. Alternatively, instead of title you can paste a full URL to an issue on GitHub.

2
Tidak tahu tentang Hub, tersedia melalui homebrew: brew install hubIni sepertinya jawaban yang benar untuk pengguna mac.
wfbarksdale

1
//, Apakah ada tempat online yang bisa saya tunjuk orang untuk informasi lebih lanjut tentang Hub?
Nathan Basanese

19

Seorang pria mencari seperti ...

man git | grep pull | grep request

memberi

git request-pull <start> <url> [<end>]

Tapi, terlepas dari namanya, bukan itu yang Anda inginkan. Menurut dokumen:

Buat permintaan meminta proyek hulu Anda untuk menarik perubahan ke pohon mereka. Permintaan, dicetak ke output standar, dimulai dengan deskripsi cabang, merangkum perubahan dan menunjukkan dari mana mereka dapat ditarik.

@ HolgerJust menyebutkan permata github yang melakukan apa yang Anda inginkan:

sudo gem install gh 
gh pull-request [user] [branch]

Yang lain menyebutkan hubpaket resmi oleh github:

sudo apt-get install hub

atau

brew install hub 

kemudian

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]

3
Ini menghasilkan ringkasan perubahan yang tertunda, itu tidak ada hubungannya dengan permintaan tarik yang dikeluarkan melalui Github
Flov

1
@ Fllov Dengan "Ini", saya menganggap Anda maksud git request-pullgaris. Ya, itu masuk akal, tapi saya terkejut git tidak memiliki perintah untuk mengirim email permintaan-tarik seperti yang dilakukan github. Lagi pula, git config user.emailtersedia untuk itu. Apalagi dengan perintah yang bernama pull-request.
Hobs

2
Untuk Ubuntu, sepertinya github-clitidak lagi tersedia setelah Precise ... Saya sudah membuka pertanyaan untuk meminta alternatif.
IsaacS

7

Saya akhirnya membuat sendiri , saya menemukan bahwa itu bekerja lebih baik daripada solusi lain yang ada.

https://npmjs.org/package/pullr


6
Mencoba melakukan pullr -n di dalam repositori hasil kloning. Memberi saya kesalahan pembukaan ... / cloningRepo / undefined / .pullr-token-cache di windows 7. Anda mungkin ingin memiliki beberapa dokumentasi lagi - seperti contoh penggunaan?
BT

5

Baru-baru ini saya membuat alat yang melakukan persis seperti yang Anda inginkan:

https://github.com/jd/git-pull-request

Ini mengotomatiskan segala sesuatu dalam satu perintah, foro repo, mendorong PR dll. Ini juga mendukung memperbarui PR jika Anda perlu mengedit / memperbaikinya!


5

Saya menggunakan alias sederhana untuk membuat permintaan tarik,

alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'

2

Selain itu github/hub, yang bertindak sebagai proksi ke Git , Anda sekarang (Februari 2020) memiliki cli/cli:

Lihat " Menambah biaya pengalaman perintah Anda: GitHub CLI sekarang dalam versi beta "

Buat permintaan tarik

Buat cabang, buat beberapa komitmen untuk memperbaiki bug yang dijelaskan dalam masalah ini, dan gunakan gh untuk membuat permintaan tarik untuk membagikan kontribusi Anda.

cli / cli pr creation - https://i1.wp.com/user-images.githubusercontent.com/10404068/74261506-35df4080-4cb0-11ea-9285-c41583009e6c.png?ssl=1

Dengan menggunakan GitHub CLI untuk membuat permintaan tarik, itu juga secara otomatis membuat garpu ketika Anda belum memilikinya, dan mendorong cabang Anda dan membuat permintaan tarik Anda untuk menggabungkan perubahan Anda.


Dan pada bulan April 2020: " GitHub CLI sekarang mendukung permintaan tarikan autofilling dan konfigurasi khusus "

GitHub CLI 0.7 keluar dengan beberapa peningkatan yang paling banyak diminta dari umpan balik yang diberikan oleh pengguna beta kami.
Sejak rilis minor terakhir, 0,6, ada tiga fitur utama:

  • Konfigurasikan ghuntuk menggunakan editor pilihan Anda dengan gh config set editor [editor].
  • Konfigurasikan ghke default ke SSH dengan gh config set git_protocol ssh.
    Protokol Git default adalah HTTPS.
  • IsiOtomatis judul dan isi permintaan tarik dari komit Anda dengan gh pr create --fill.

Begitu:

gh pr create --fill

1

Saya telah menggunakan alat ini sebelumnya - meskipun sepertinya perlu ada masalah terbuka terlebih dahulu, ini sangat berguna dan benar-benar merampingkan alur kerja jika Anda menggunakan pelacakan masalah github. git tarik-terbuka dan kemudian permintaan tarik diajukan dari cabang apa pun yang Anda pilih atau pilih. https://github.com/jehiah/git-open-pull

EDIT: Sepertinya Anda dapat membuat masalah dengan cepat, jadi alat ini adalah solusi yang baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.