小技巧:透過命令列發送 Github Pull-Request

當參與開源的專案一多,發送 PR (Pull-Request) 累積花費的時間是很可觀的,此時如果能透過命令列工具批次處理可以省下許多時間,在管理多個 submodule 情況下,這種技巧尤其重要。

環境設定

首先,安裝 hubhub 是 github 推出的 git wrapper,有了它我們就可以擴充原有的 git 命令。

Mac 環境下,安裝指令是:brew install hub

安裝了之後,我們有的只是 hub 這個命令,其實還是很不直覺,所以我們需要在開機腳本中(如:.zshrc)加入以下命令替換掉 git

eval "$(hub alias -s)"

如果覺得結合得還不夠完美,可以進一步地加入官方的 .zsh_completion,這樣就可以用 zsh 自動補全功能啦,不需要記一堆指令。

wget https://raw.githubusercontent.com/github/hub/master/etc/hub.zsh_completion ~/.zsh/completions/_hub  

接著,將以下命令加入 .zshrc 就完成了。

fpath=(~/.zsh/completions $fpath)  
autoload -U compinit && compinit  

如果還是無法生效的話,可以強制清空快取重建 zcomdump:

rm -f ~/.zcompdump; compinit

命令列發送 PR

完成上述步驟後,我們就可以透過 git 來發 PR 了。

舉例來說,如果要將 hitripod/zsh-autosuggestions 上的 master 分支改動發送到 zsh-users/zsh-autosuggestions 上的 v0.3.x 分支:(b: base, h: head)

git pull-request -m "update README.md" -b hitripod/zsh-autosuggestions:master -h zsh-users/zsh-autosuggestions:v0.3.x

如果是 Mac 系統,可以加上 | pbcopy 這樣 PR URL 也就自動複製到剪貼簿啦。

git pull-request -m "update README.md" -b hitripod/zsh-autosuggestions:master -h zsh-users/zsh-autosuggestions:v0.3.x | pbcopy