如何将主分支回退到上游分支

146

我已经分叉了一个Git仓库并设置了上游。我在主分支中进行了一些更改,然后提交并推送到Github。

现在,我应该怎么做才能放弃在主分支中的所有更改,并使其与上游的主分支相同?

1个回答

281

(假设你要忽略的更改现在位于你的 origin 远程,你在 master 分支上,并且你想恢复到 upstream 远程的内容)

首先,将你的工作副本重置为上游主分支:

git remote update
# the double hyphen ensures that upstream/master is
# considered as a revision and not confused as a path
git reset --hard upstream/master --

然后将这个新的分支头推送到你的远程仓库,无需考虑它不是快进(fast-forward)的事实:

git push origin +master

14
如果你是通过 GitHub fork 了某个分支,可能还需要运行 git remote add upstream <upstream_repo_url> 命令。 - Kato
3
git push origin +master 中的 + 符号是强制覆盖推送的意思,它会强制将本地的 master 分支推送到远程的 origin 仓库中的 master 分支,并覆盖远程分支上的任何变更。而 git push origin master 只会在没有冲突的情况下将本地的 master 分支推送到远程的 origin 仓库中的 master 分支。 - bluenote10
4
它们不是一样的。+ 符号告诉 git "[忽略] 不是快进合并",有点像执行 git push --force,但只适用于该特定引用。 - nickgrim
1
对我没用。我在执行后进行了git状态检查,发现有已修改的项目。我必须清除并重新开始。Git非常难以理解。 - Mitch
1
@mehmet 不,它只会改变你所在的分支。 - John
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接