如果我有一个本地分支和一个远程分支不同步,很容易通过运行将本地分支重置为远程状态
$ git reset --hard origin/foo
但是,在某些情况下这很笨拙,特别是如果我正在运行的脚本需要将我当前 check out 的任何分支重置为远程状态(我现在在 Jenkins 脚本中遇到了这个问题)。
我需要的是一个“找出远程跟踪分支并将本地分支重置为任何状态”的命令。让我们假设总是有一个远程跟踪分支。
简单地应用“来源”是行不通的,因为我有多个 Remote 。我得到的最接近的是
git reset --hard `git branch -vv | grep "^*" | grep -P -o "(?<=\[).*(?=\])"`
...但这看起来很愚蠢,考虑到 git 的百万条命令,一定有更简单的方法。
最佳答案
Git 提供了 @{u}
作为上游的简写,所以我们可以使用:
$ git reset --hard @{u}
或
$ git reset --hard @{upstream}
正是针对这类问题。另见 http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches .
关于git - 如何在不指定后者的情况下将本地分支重置为远程跟踪分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312498/