[英]How to find a Pull Request start SHA if it is on the fork master branch
我正在創建一個 GitHub 操作,它運行檢查以查看拉取請求如何影響代碼庫。 檢查需要兩個輸入:
第二個輸入很簡單:它是 PR 分支上的最新提交
第一個有點棘手,我很難弄清楚。 它不能簡單地成為主(上游)存儲庫的master
,因為潛在的 rebase 問題(新更改已經在upstream/master
,但不在 fork 的master
)。 所以我在master
分支和HEAD
之間使用了merge-base
。
git merge-base master HEAD
這按預期工作,但如果 PR 是從 fork 的master
分支制作的,則會出現問題。 合並基礎與HEAD
相同。
如何獲得正確的SHA
以便在 PR 上進行更改之前簽出 repo。 GitHub 正確處理這種情況並且只顯示更改的文件。
如果在 PR 合並后運行此操作,則應查找 PR 提交的父項的合並基礎:
git merge-base HEAD^ HEAD^2
似乎有效的解決方案是在 pull request HEAD
和upstream
master
之間找到合並基礎。
git remote add upstream https://github.com/${{github.repository}}
git fetch upstream
merge_base=$(git merge-base refs/remotes/upstream/master HEAD)
git checkout $merge_base
這假設拉取請求指向master
分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.