我需要使用什麼 Git 工作流來比較作者強制推送之前和之後的 PR 分支?
這更像是一個 Git 問題,但它與 Bitcoin Core PR 審查(或其他具有嚴格審查要求的開源項目)特別相關。
您已經對 PR 進行了審查,PR 作者強制推送,並且您想比較強制推送之前和之後的 PR 分支。我讀過你應該
git range-diff
在這種情況下使用。但我不確定如何讓 Git 在強制推送之前儲存分支(之前的送出不再存在於 Git 歷史記錄中)並與最新版本的分支進行比較。
Git 就像一個區塊鏈:它只保留“最佳送出鏈”。將
git push -f
先前的送出鏈“重組”到新的“最佳鏈”。如果您在強制推送之前簽出 PR,則您的本地 git 儲存庫會保留強制推送之前送出的副本。然後,您可以使用
git fetch
和git range-diff <branch> <upstream/branch>
比較力推的前後狀態。如果您在強制推送後已經檢查了更新的分支,您的本地儲存庫仍會保留先前送出的副本(即使它沒有顯示在 中git log
),您可以通過呼叫git range-diff <old-commit-hash> <branch>
. 如果您不記得舊的送出鏈提示,您可以通過git reflog
.與比特幣節點類似,要麼在相關時看到已滅絕的鏈尖,要麼沒有(簡單的)獲取它的方法,除非您在強制之前創建上游分支的本地副本,否則您無法輕易獲得覆蓋的送出 - push 因為被覆蓋的送出被 GitHub 丟棄。在這種情況下,只需從頭開始復習。
同時,GitHub 顯然確實將舊的送出保留了一段時間。所以,如果你很幸運並且它還沒有被清理,你也許可以通過以下方式檢索“stale commit-chain-tip”:
git fetch upstream <commit-hash>