loading...

Merge GitHub Pull Requests without leaving command line

acro5piano profile image Kay Gosho ・1 min read

My previous workflow in my personal project was like this:

  • git checkout -b awesome-feature
  • Edit file
  • git add .; git commit -m 'created awesome feature'
  • git push origin awesome-feature
  • hub pull-request Using hub command
  • Open GitHub PR page
  • Press the "Merge Button"

Although I use some alias in Git, Open GitHub PR page and Press the "Merge Button" are stressful task. I cannot be patient of browser loading!

Basically, I don't need to review my own Pull Request for my personal project, so I create a tiny function to merge Pull Request from command line:

function merge
    set repo (pwd | perl -pe 's#.+github.com/##')

    curl \
        -XPUT \
        -H "Authorization: token $GITHUB_TOKEN" \
        https://api.github.com/repos/$repo/pulls/$argv[1]/merge
end

More Detail Lines

Use that command like this:

merge 22

Quite simple.

It assumes that you are in /path/to/github.com/user/repo. You can also use git remote -v to get current directory's repository info.

I publish my dotfiles to GitHub, so I made GITHUB_TOKEN environment variable, which is very sensitive info.

https://github.com/acro5piano/dotfiles

Discussion

pic
Editor guide
Collapse
vbjay profile image
Jay Asbury

You do realize that if you do the merge locally and push the commits to the GitHub remote, the pull request will say merged?

Collapse
acro5piano profile image
Kay Gosho Author

Yeah... I forgot the feature! Haha

git checkout master
git merge awesome-feature
git push origin master

is enough! Thanks.

Collapse
pauguillamon profile image
PauGuillamon

Interesting tool! But if you're working alone and no one is going to review the code, then why not avoid the PR process and merge/commit directly into the main branch?

Collapse
acro5piano profile image
Kay Gosho Author

Always pushing to master is okay, but I want to log my work explicitly.
And if I develop my own OSS, lots of pull request is good for the project insights, as it looks development is active.

Collapse
pauguillamon profile image
PauGuillamon

What do you mean by log your work explicitly? You can still create your feature branches and merge them to master. Or am I missing something?
IMHO development will still look active if you update your project regularly, without needing to do PRs if you're the only developer.

Thread Thread
acro5piano profile image
Kay Gosho Author

What do you mean by log your work explicitly?

I mean, people can follow code changes by looking at PRs of the repository.

Yes, as you said we don't have to create each PRs if I'm the only developer.
However, I sometimes want to do self-review on GitHub.

Collapse
emjayoh profile image
Matt Ogram

yeah or just merge the branch locally.. heh.