检查 Github PR 然后提取更新?

Checking out a Github PR and then pulling updates?

我写了一个小 bash 脚本来即时检查 PR:

co URL

co() {
    set 
    git fetch upstream
    git checkout pr/${1##*/}
}

在分支上签出后,我想知道从 creators 源分支轻松提取更新的最佳方法。

例如:

UserA 打开一个 PR 到上游 master。我使用此脚本签出拉取请求,但 UserA 推送更新。我怎样才能提取任何未来的更新?

一个简单的修改,假设你的 PR 都应该在 upstream 上(如现有代码所假设的那样)可能是:

co() {
    git fetch upstream || return
    git checkout --track "pr/${1##*/}" || return
    git merge "upstream/pr/${1##*/}"
}

那是如果你想保留你可能所做的任何本地更改,尽管其他人强制推送到 PR 分支可能会把事情弄得一团糟。如果您只想将分支重置为远程分支,放弃任何本地更改:

co() {
    git fetch upstream || return
    git checkout --track "pr/${1##*/}" || return
    git reset --hard "upstream/pr/${1##*/}"
}

...或者,将本地更改 放在 远程更改之上,而不是直接丢弃它们:

co() {
  git fetch upstream || return
  git checkout --track "pr/${1##*/}" || return
  git rebase "upstream/pr/${1##*/}"
}

没有一种正确的方法可以做到这一点可能是一个很好的暗示,表明 git 上游做了正确的事情 而不是 使这一切成为可能一个内置命令:人类判断适合根据手头的场景决定正确的动作。