Bash 签出Github PR,然后获取更新?

Bash 签出Github PR,然后获取更新?,bash,git,github,git-bash,Bash,Git,Github,Git Bash,我编写了一个小bash脚本,用于在飞行中查看PRs: co-URL co() { set $1 git fetch upstream git checkout pr/${1##*/} } 一旦我在分支上签出,我想知道从creators源分支轻松获取更新的最佳方法 例如: UserA在上游主机中打开一个PR。我使用这个脚本签出pull请求,但是UserA推送更新。我如何获取任何未来的更新?一个简单的修改,假设您的PRs都位于上游上(如现有代码所假设的),可能是: co()

我编写了一个小bash脚本,用于在飞行中查看PRs:

co-URL

co() {
    set $1
    git fetch upstream
    git checkout pr/${1##*/}
}
一旦我在分支上签出,我想知道从creators源分支轻松获取更新的最佳方法

例如:


UserA在上游主机中打开一个PR。我使用这个脚本签出pull请求,但是UserA推送更新。我如何获取任何未来的更新?

一个简单的修改,假设您的PRs都位于上游<代码>上(如现有代码所假设的),可能是:

co() {
    git fetch upstream || return
    git checkout --track "pr/${1##*/}" || return
    git merge "upstream/pr/${1##*/}"
}
如果你想保留你所做的任何本地更改,尽管其他人对公关部门的强行推动可能会把事情搞得一团糟。如果只想将分支重置为远程分支,则放弃任何本地更改:

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 upstream没有把所有的事情都放在一个内置命令上,这是正确的:人类的判断适合根据手头的场景来决定正确的操作。

设置$1在这里打算做什么?(实际上,它所做的是在
$1
之后丢弃所有参数,然后取
$1
中的参数,在
IFS
中按空格或字符将其拆分,并将拆分操作产生的每个单词作为全局展开;这通常不是一组有用的行为)。