方便的git别名”git pr”在OSS维护中十分有用

我将介绍一个方便的别名,是从公司的人那里得知的。很可能这个来源是这个,感谢作者gnarf先生。
这个别名是用来管理拉取请求的,似乎主要适用于进行代码审核和开源软件维护的人们。

安装

请将下面的.gitconfig文件复制一份或者执行add-pr-alias.sh文件。

# for github remotes
[alias]
  pr  = "!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f"
  pr-clean = "!git for-each-ref refs/heads/pr/* --format='%(refname)' | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done"
# for bitbucket/stash remotes
  spr  = "!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull-requests/$1/from:pr/$1 && git checkout pr/$1; }; f"
#!/bin/sh
# For github
git config --global alias.pr '!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
git config --global alias.pr-clean '!git for-each-ref refs/heads/pr/* --format="%(refname)" | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done'
# For stash/bitbucket
git config --global alias.spr '!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull-requests/$1/from:pr/$1 && git checkout pr/$1; }; f'

用法

通过使用该别名,您可以轻松将远程拉取请求下载到本地进行检查。

コマンド内容git pr 4ローカルにpr/4というブランチを作り、upstreamもしくはoriginの4番のプルリクエストにチェックアウトします。git pr 4 someremoteローカルにpr/4というブランチを作り任意のリモート(someremote)の4番のプルリクエストにチェックアウトします。git pr-cleanローカルリポジトリからpr/*の形の名前を持つブランチを全て削除します。git sprgit prと同じ動きをするが、bitbucketやstashを使う時はこちらを使う