Git - 将未合并的拉取请求的更改显示为我的 head 分支中未提交的更改

Git - show changes from an unmerged pull request as uncommitted changes in my head branch

我拥有这个仓库。一个人发送了一个我还没有合并的 PR。与我在 VSCode 中的 master 分支相比,我想查看该 PR 的所有更改。这类似于您进行一些更改并且这些更改处于未提交状态)。我该怎么做?

我关注了 How can I check out a GitHub pull request with git? 但没有找到我需要的答案。例如命令 git pull origin pull/939/head 将合并更改而不是显示为未提交的更改。

首先,您必须获取 PR
git fetch origin pull/<pr_id>/head:new_branch
现在您在 new_branch
中有了 PR 更改 git diff new_branch ^HEAD | git apply -

  • git diff <another-branch> ^HEAD 这将打印 new_branch 和您当前分支 (HEAD) 之间的变化差异。
  • git apply - 然后这会将这些更改应用到当前索引。

成功了。

所以,我的完整流程是:

  1. 'detached HEAD' 州
    结帐 PR (100) git fetch origin pull/100/head && git checkout FETCH_HEAD

  2. 显示为未提交的更改
    git reset main

  3. 切换回主分支并进行这些更改
    git switch -


此外,制作了一个方便的 powershell 函数

<# USE CASE
> gitpr
gives list of active PRs

> gitpr 12
checks out PR #12
#>
function gitpr {
  param(
    [Parameter(ValueFromRemainingArguments = $true)]
    [String[]] $prNum
  )
  
  if($prNum){
  git fetch origin pull/"$prNum"/head && git checkout FETCH_HEAD
  git reset main 
  git switch -
  echo "checked out PR: "$prNum""
  }else{
  gh pr list
  }
}