如果我的本地分支和远程分支已经不同步,则可以通过运行
将本地分支重置为远程状态$ git reset --hard origin/foo
但是,有些情况下这是不实用的,特别是如果我运行的脚本需要重置我当前检出的任何分支到远程状态(我现在在Jenkins脚本中有这个问题)。 / p>
我需要的是一个'找出远程跟踪分支并将本地分支重置为任何内容的命令'。我们假设总是有一个远程跟踪分支。
简单地应用'origin'是行不通的,因为我有多个遥控器。我得到的最接近的是
git reset --hard `git branch -vv | grep "^*" | grep -P -o "(?<=\[).*(?=\])"`
...但这看起来很愚蠢,鉴于git的百万命令,必须有一种更简单的方法。
答案 0 :(得分:6)
Git提供@{u}
作为上游的简写,所以我们可以使用:
$ git reset --hard @{u}
或
$ git reset --hard @{upstream}
确切地说是这种问题。另请参阅http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches。