最近意識到 Github 上的 pull requests 其實也是 branches 參照,所以你也可以根據 pull request 編號在本地端直接取出。對於常用 pull request 功能來作 code review 的團隊來說,是蠻方便的小技巧。
首先編輯專案下的 .git/config
,加上 fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
這一行,例如:
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = [email protected]:ihower/sandbox.git fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
接著打 git fetch origin
就會抓下來這些 remote branches:
From github.com:eduvo/keybridge * [new ref] refs/pull/1/head -> origin/pr/1 * [new ref] refs/pull/2/head -> origin/pr/2 * [new ref] refs/pull/3/head -> origin/pr/3
接著用 checkout 取出,例如 git checkout pr/3
即可。
喜歡的話,也可以設成 git 全域設定,直接套用所有專案:
git config --global --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
參考資料: Checkout Pull Requests Locally
本地端送 Pull request
舉一反三,那要怎麼在本地端送 Github 的 Pull Request? 參考 HSATAC 的這篇:用 Commandline 發 Github Pull Request:
首先安裝 github 的 hub 工具:
brew install hub # 或 gem install hub
編輯 ~/.bash_profile
:
# https://gist.github.com/hSATAC/5591270#file-gistfile1-sh # Usage: pr (pull request current branch into develop) # Usage 2: pr stable (pull request current branch into stable) # Notice: replace "team" with your github team account. function pr() { base=$1; if [ "$1" == "" ]; then base="develop" fi hub pull-request -b team:"$base" -h team:`git rev-parse --abbrev-ref HEAD`; }
這樣使用也會同時在 GitHub 上面建立一個 Issue 嗎?