我已经分叉了一个Git仓库并设置了上游。我在主分支中进行了一些更改,然后提交并推送到Github。
现在,我应该怎么做才能放弃在主分支中的所有更改,并使其与上游的主分支相同?
(假设你要忽略的更改现在位于你的 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
git remote add upstream <upstream_repo_url>
命令。 - Katogit push origin +master
中的+
符号是强制覆盖推送的意思,它会强制将本地的master
分支推送到远程的origin
仓库中的master
分支,并覆盖远程分支上的任何变更。而git push origin master
只会在没有冲突的情况下将本地的master
分支推送到远程的origin
仓库中的master
分支。 - bluenote10+
符号告诉 git "[忽略] 不是快进合并",有点像执行git push --force
,但只适用于该特定引用。 - nickgrim