將 GitHub PR 號碼做成 git ref
作者:gugod 發佈於:每次要合併別人的 PR 時,都覺得要開 Web UI 把 branch 名拷貝下來實在是很麻煩。稍微搜尋一下就找到一則鄉野文件,能讓人只用 git
指令就完事。基本上是個能直接在 git 倉儲中對照至 github PR 編號的方法。
GitHub 端看來一直有提供如 refs/pull/42/head
這種特殊的 ref,對應到 PR #42 最新進度。基本上只要加一點設定,就能讓 git 一直把這些特定的節點儲存在本地端倉儲。
先找到專案倉儲中 .git/config
中的這一段("origin" 對應到某個 github 專案):
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
普通剛 git clone
下來之後,這段裡只會有一列 fetch
,若再多加上一列,改成:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
則之後每次 git fetch
後, origin/pr/42
這隻 branch 會對應到 PR #42 最新的進度。
有了這步之後,要合併別人的 PR 就不必開 Web UI 去找 branch 名,只要知道號碼就可以:
git merge origin/pr/42
不知為何,找不太到 github 官方文件中對於此事的描述。附帶一提 gitlab 那邊也有支援類似的機制,但在 gitlab 不叫 "Pull Reqeust" 而是 "Merge Request"。設定為:
fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*