Git: 放弃分散的本地分支上的所有更改

我有一个本地话题分支正在跟踪一个远程分支。为了便于讨论,假设提交历史是这样的:

A--B--C--O1--O2--O3 (origin/phobos)
\
L1--L2--L3 (phobos)

查看了相对提交历史之后,我现在想要丢弃对本地 phobos分支的所有更改,并将其返回到 origin/phobos的直接副本,以便本地历史如下所示:

A--B--C--O1--O2--O3 (phobos origin/phobos)

我真的不希望对 phobos分支进行本地更改,也不希望任何合并之后出现在原始存储库中。(所以,只是合并不是我想要的。)

这看起来应该很简单,但是我的谷歌功能让我失望了。我该怎么做呢?

87829 次浏览

删除分支,然后重新创建它:

$ git branch -D phobos
$ git checkout --track -b phobos origin/phobos

请注意,删除分支会吹走分支的重新插入。

另一方面,重置分支(如 另一个答案所示)不仅保留了重新测试,而且实际上还记录了重新测试中的重置。如果需要,这使操作在以后很容易可逆。

git checkout phobos
git reset --hard origin/phobos

这告诉 Git 将 phobos的头重置为与 origin/phobos相同的提交,并更新工作树以匹配。