.gitconfig [github] user = your-username password = your-password [alias] # git pullrequest branch-name "title line" "description blah blah" pullrequest = !sh -c 'curl -s -u "`git config --get github.user`:`git config --get github.password`" https://api.github.com/repos/`git remote show -n origin | head -n 2 | grep -o github.com[^.]* | cut -b 12-`/pulls -d "\\{\\\"title\\\":\\\"$2\\\",\\\"body\\\":\\\"$3\\\",\\\"head\\\":\\\"$1\\\",\\\"base\\\":\\\"master\\\"\\}"' - ---- breaking it down: sh -c '' - run a shell, reading parameters passed in git config --get github.x get git config variable git remote show -n origin | head -n 2 | grep -o github.com[^.]* | cut -b 12- a very hacky way to get the api path for the repository surely there is a better way? "\\{\\\"title\\\":\\\"$2\\\",\\\"body\\\":\\\"$3\\\",\\\"head\\\":\\\"$1\\\",\\\"base\\\":\\\"master\\\"\\}" the json string. i can't think of any way to make the leaning toothpicks (via @vhata) dissappear?