Bạn có thể đưa ra yêu cầu kéo từ dòng lệnh trên GitHub không?


298

Có vẻ như bạn phải tương tác với github.com để bắt đầu yêu cầu kéo. Có phải vậy không?


2
Tôi không thấy bất cứ điều gì trong API của họ để thực hiện các yêu cầu kéo: Develop.github.com
Adam Vandenberg


1
Hệ điều hành nào bạn định làm điều này?
IgorGanapolsky

Làm thế nào để làm điều này trong Windows 8 hoặc 10?
Mathivanan KP

Tôi đã tạo một tập lệnh bash cho việc này, nếu có ai quan tâm.
mvr

Câu trả lời:


114

CẬP NHẬT : Lệnh hub hiện là một dự án github chính thức và cũng hỗ trợ tạo các yêu cầu kéo

Nguồn gốc :

Có vẻ như một điều đặc biệt hữu ích để thêm vào lệnh hub: http://github.com/defunkt/hub hoặc đá quý github: http://github.com/defunkt/github-gem

Tôi đề nghị nộp một vấn đề với các dự án yêu cầu nó. Các anh chàng github khá nhanh nhạy.


8
Github-gem bao gồm một cơ sở để tạo các yêu cầu kéo theo độ tuổi : gh pull-request [user] [branch].
Holger Chỉ

6
Liệu nó có hoạt động mà không có Github rẽ nhánh repo trước, tức là từ một bản sao trực tiếp của repo nguồn?
Hari Karam Singh

1
@Holger Chỉ và bất cứ ai khác: Điều đó chỉ tạo ra văn bản của yêu cầu kéo và không bỏ qua nhu cầu về một ngã ba trên Github. Tôi chưa tìm thấy cách nào khác. Tôi dự định dùng thử tiện ích 'pullr' được đăng dưới đây. Xem ở đây để biết vấn đề của những người yêu cầu hỗ trợ kéo yêu cầu đầy đủ từ github-gem.
đời

1
cho lệnh nhanh bằng cách sử dụng hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana

Không biết tại sao nó không được đề cập trong các tài liệu trên, nhưng để hợp nhất yêu cầu kéo nhanh, hãy kiểm tra chi nhánh chính của bạn làmhub merge https://github.com/repo/pull/1
holmberd

53

Git bây giờ xuất xưởng với một tiểu ban 'git request-pull' [-p] <start> <url> [<end>]

Bạn có thể xem các tài liệu ở đây

Bạn có thể thấy điều này hữu ích nhưng nó không hoàn toàn giống với tính năng của GitHub .


7
@NathanBasan Nó tạo ra văn bản có thể đọc được của con người mô tả yêu cầu kéo. Các tài liệu git và sách GitHub nói rằng gửi e-mail này cho người duy trì dự án, một người có đặc quyền viết trên repo được chia sẻ (có thể là github). Nhà bảo trì xem xét văn bản yêu cầu kéo mà bạn đã gửi (thay vì sử dụng quy trình yêu cầu kéo trực tuyến của github). Họ có thể thực hiện một git pulltrong các url và chi nhánh được chỉ định trong yêu cầu kéo của bạn để hợp nhất các thay đổi của bạn vào bản sao cục bộ của họ và đẩy những thay đổi này lên đến github.
hobs

30

Với trình bao bọc dòng lệnh Hub, bạn có thể liên kết nó với git và sau đó bạn có thể làm git pull-request

Từ trang người đàn ông của trung tâm:

   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
Không biết về Hub, nó có sẵn thông qua homebrew: brew install hubĐây có vẻ như là câu trả lời chính xác cho người dùng mac.
wfbarksdale

1
//, Có nơi nào trực tuyến mà tôi có thể chỉ cho mọi người để biết thêm thông tin về Hub không?
Nathan Basan

19

Một người đàn ông tìm kiếm như ...

man git | grep pull | grep request

cho

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

Nhưng, mặc dù tên, nó không phải là những gì bạn muốn. Theo các tài liệu:

Tạo một yêu cầu yêu cầu dự án ngược dòng của bạn kéo các thay đổi vào cây của họ. Yêu cầu, được in ra đầu ra tiêu chuẩn, bắt đầu bằng mô tả chi nhánh, tóm tắt các thay đổi và cho biết nơi chúng có thể được kéo.

@HolgerJust đã đề cập đến viên ngọc github làm những gì bạn muốn:

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

Những người khác đã đề cập đến hubgói chính thức của github:

sudo apt-get install hub

hoặc là

brew install hub 

sau đó

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

3
Điều này tạo ra một bản tóm tắt các thay đổi đang chờ xử lý, nó không liên quan gì đến yêu cầu kéo đang được phát hành qua Github
Flov

1
@Flov Bởi "Điều này", tôi giả sử bạn có nghĩa là git request-pulldòng. Phải, điều đó có ý nghĩa, nhưng tôi ngạc nhiên khi git không có lệnh đối với các yêu cầu kéo email như github. Rốt cuộc, git config user.emailcó sẵn cho nó. Đặc biệt với một lệnh có tên pull-request.
hobs

2
Đối với Ubuntu, có vẻ như github-clikhông còn khả dụng sau Chính xác ... Tôi đã mở một câu hỏi để yêu cầu một giải pháp thay thế.
IsaacS

7

Tôi đã kết thúc việc làm của riêng mình , tôi thấy rằng nó hoạt động tốt hơn các giải pháp khác xung quanh.

https://npmjs.org/package/pullr


6
Đã thử làm pullr -n bên trong kho lưu trữ nhân bản. Đã cho tôi một lỗi mở ... / cl biệtRepo / không xác định / .pullr-token-cache trên windows 7. Bạn có thể muốn có thêm một số tài liệu - như cách sử dụng ví dụ?
BT

5

Gần đây tôi đã tạo một công cụ thực hiện chính xác những gì bạn muốn:

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

Nó tự động hóa mọi thứ trong một lệnh duy nhất, đẩy repo, đẩy PR, vv Nó cũng hỗ trợ cập nhật PR nếu bạn cần chỉnh sửa / sửa nó!


5

Tôi đang sử dụng bí danh đơn giản để tạo yêu cầu kéo,

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

2

Ngoài ra github/hub, hoạt động như một proxy cho Git , bạn hiện tại (tháng 2 năm 2020) cócli/cli :

Xem " Tăng tốc trải nghiệm dòng lệnh của bạn: GitHub CLI hiện đang trong giai đoạn thử nghiệm "

Tạo một yêu cầu kéo

Tạo một nhánh, thực hiện một số cam kết để sửa lỗi được mô tả trong sự cố và sử dụng gh để tạo yêu cầu kéo để chia sẻ đóng góp của bạn.

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

Bằng cách sử dụng GitHub CLI để tạo các yêu cầu kéo, nó cũng tự động tạo một ngã ba khi bạn chưa có, và nó đẩy chi nhánh của bạn và tạo yêu cầu kéo của bạn để hợp nhất thay đổi của bạn.


Và vào tháng 4 năm 2020: " GitHub CLI hiện hỗ trợ các yêu cầu kéo tự động và cấu hình tùy chỉnh "

GitHub CLI 0.7 đã ra mắt với một số cải tiến được yêu cầu cao nhất từ ​​phản hồi mà người dùng beta của chúng tôi đã cung cấp.
Kể từ phiên bản nhỏ cuối cùng, 0,6, có ba tính năng chính:

  • Cấu hình ghđể sử dụng trình soạn thảo ưa thích của bạn với gh config set editor [editor].
  • Cấu hình ghđể mặc định thành SSH với gh config set git_protocol ssh.
    Giao thức Git mặc định là HTTPS.
  • Tự động điền tiêu đề và nội dung của yêu cầu kéo từ các cam kết của bạn với gh pr create --fill.

Vì thế:

gh pr create --fill

1

Tôi đã sử dụng công cụ này trước đây - mặc dù có vẻ như cần phải mở một vấn đề trước tiên, nhưng nó cực kỳ hữu ích và thực sự hợp lý hóa quy trình làm việc nếu bạn sử dụng theo dõi vấn đề của github. git open-pull và sau đó yêu cầu kéo được gửi từ bất kỳ chi nhánh nào bạn đang ở hoặc chọn. https://github.com/jehiah/git-open-pull

EDIT: Có vẻ như bạn có thể tạo ra các vấn đề một cách nhanh chóng, vì vậy công cụ này là một giải pháp tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.