检出Github PR,然后提取更新?

时间:2018-08-24 15:07:06

标签: bash git github git-bash

我写了一个bash脚本来通过以下方式即时检查PR:

co URL

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

一旦我在分支上签出,我想知道最好的方法是轻松地从创建者源分支中获取更新。

例如:

UserA将PR打开到上游主服务器。我使用此脚本签出提取请求,但UserA推送了更新。我该如何取消将来的更新?

1 个答案:

答案 0 :(得分:1)

一个简单的修改,假设您的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上游通过 not 将所有内置命令都做了正确的事情:人的判断适合根据眼前的场景来决定正确的行动。