It seems like you have to interact with github.com to initiate a pull request. Is this so?
UPDATE: The hub command is now an official github project and also supports creating pull requests
ORIGINAL:
Seems like a particularly useful thing to add to the hub command: http://github.com/defunkt/hub or the github gem: http://github.com/defunkt/github-gem
I suggest filing an issue with those projects asking for it. The github guys are pretty responsive.
gh pull-request [user] [branch]
. –
Unemployable hub
: hub pull-request -m "message pull request" -b master -h your_branch
–
Liddy hub merge https://github.com/repo/pull/1
–
Knighterrant Git now ships with a subcommand 'git request-pull' [-p] <start> <url> [<end>]
You can see the docs here
You may find this useful but it is not exactly the same as GitHub's feature.
git pull
of the url and branch indicated in your pull request to merge your changes into their local clone and push these changes up to github. –
Gonnella With the Hub command-line wrapper you can link it to git and then you can do
git pull-request
From the man page of 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.
brew install hub
This seems like the correct answer for mac users. –
Balustrade A man search like...
man git | grep pull | grep request
gives
git request-pull <start> <url> [<end>]
But, despite the name, it's not what you want. According to the docs:
Generate a request asking your upstream project to pull changes into their tree. The request, printed to the standard output, begins with the branch description, summarizes the changes and indicates from where they can be pulled.
@HolgerJust mentioned the github cli does what you want:
gh pull-request [user] [branch]
Others have mentioned the official hub
package by github:
sudo apt-get install hub
or
brew install hub
then
hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]
git request-pull
line. Yea, that makes sense, but I'm surprised git doesn't have a command to e-mail pull-requests like github does. After all, the git config user.email
is available to it. Especially with a command named pull-request
. –
Gonnella github-cli
is no longer available after Precise...I've opened a question to ask for an alternative. –
Nervine git
client with just a git push -u origin master
with a new origin
url. –
Gonnella In addition of github/hub
, which acts as a proxy to Git, you now (February 2020) have cli/cli
:
See "Supercharge your command line experience: GitHub CLI is now in beta"
Create a pull request
Create a branch, make several commits to fix the bug described in the issue, and use gh to create a pull request to share your contribution.
By using GitHub CLI to create pull requests, it also automatically creates a fork when you don’t already have one, and it pushes your branch and creates your pull request to get your change merged.
And in April 2020: "GitHub CLI now supports autofilling pull requests and custom configuration"
GitHub CLI 0.7 is out with several of the most highly requested enhancements from the feedback our beta users have provided.
Since the last minor release, 0.6, there are three main features:
- Configure
gh
to use your preferred editor withgh config set editor [editor]
.- Configure
gh
to default to SSH withgh config set git_protocol ssh
.
The default Git protocol is HTTPS.- Autofill the title and body of a pull request from your commits with
gh pr create --fill
.
So:
gh pr create --fill
-r
, --reviewer <handle>
Request reviews from people or teams by their handle –
Drainage I ended up making my own, I find that it works better the other solutions that were around.
I'm using simple alias to create pull request,
alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'
You can install github official CLI to create PR and do other sort of things.
To setup:
gh auth login
To create PR:
gh pr create
To merge:
gh pr merge
auth login
and how to determine what repo the PR is created in (and for what account), etc. –
Schematism gh
will link these commands internally. For gh auth login
, you'd be asked which acc. you'd like to login.. it's interactive. –
Fergus I've created a tool recently that does exactly what you want:
https://github.com/jd/git-pull-request
It automates everything in a single command, forking the repo, pushing the PR etc. It also supports updating the PR if you need to edit/fix it!
I've used this tool before- although it seems like there needs to be an issue open first, it is super useful and really streamlines workflow if you use github issue tracking. git open-pull and then a pull request is submitted from whatever branch you are on or select. https://github.com/jehiah/git-open-pull
EDIT: Looks like you can create issues on the fly, so this tool is a good solution.
Yes. You can install the hub CLI util.
On MACOS: brew install hub
You need to have one time GitHub token for login.
User -> Dev settings -> Personal tokens -> Generate
(See: https://github.com/settings/tokens)
git checkout -b mybranch
hub pull-request -b master -h mybranch
#user: your_user_name
#password: your_git_token
Why not open a browser window for my pull request from the CLI?
Assuming that your CLI can open a browser window with the open
command, you can add this git alias to your ~/.gitconfig
, and it will open a new browser window for your pull request:
[alias]
pull-request = "!f() { \
REPO_NAME=$(basename -s .git `git config --get remote.origin.url`); \
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD); \
URL=\"https://github.com/YOUR_ORGANIZATION/$REPO_NAME/compare/$BRANCH_NAME?expand=1\"; \
open \"$URL\"; \
}; f"
just replace YOUR_ORGANIZATION
with the name of your organization.
then after you set it up, use: git pull-request
© 2022 - 2024 — McMap. All rights reserved.
cli/cli
in my answer below – Drainagegh pr create --fill
. See [my edited answer below](https://mcmap.net/q/86275/-can-you-issue-pull-requests-from-the-command-line-on-github – Drainage