如何获取上游 repo 并使其替换 master?我的repo只有一个分支,就是master,完全搞砸了,所以我基本上需要从上游重新开始。我认为 init 会完成这项工作,但有没有更简单的方法?
问问题
197146 次
5 回答
301
您可以在这里(至少)做两件事——您可以重新克隆远程仓库,或者您可以复制reset --hard
到共同的祖先,然后进行拉取,这将快进到远程主机上的最新提交。
具体来说,这是 Nevik Rehnel 原始答案的简单扩展:
git reset --hard origin/master
git pull origin master
注意: usinggit reset --hard
将丢弃任何未提交的更改,如果您是 git 新手,很容易将自己与此命令混淆,因此请确保在继续之前了解它将做什么。
于 2012-12-08T20:08:33.293 回答
25
在分支主机上:
git reset --hard origin/master
然后做一些清理git gc
(更多关于这个在手册页)
更新:您可能还需要做一个git fetch origin
(或者git fetch origin master
如果您只想要那个分支);无论您在重置之前还是之后执行此操作都无关紧要。(感谢@eric-walker)
于 2012-12-08T20:08:06.560 回答
21
您可以在一个命令中执行此操作:
git fetch --all && git reset --hard origin/master
或者在一对命令中:
git fetch --all
git reset --hard origin/master
请注意,您将丢失所有本地更改
于 2017-09-14T13:42:47.753 回答
10
我现在终于意识到,而不是
git fetch --all && git reset --hard origin/master
它应该是
git fetch --all && git reset --hard origin/<branch_name>
相反(如果一个人在不同的分支上工作)
于 2020-07-25T20:02:49.747 回答
7
git reset <hash> # you need to know the last good hash, so you can remove all your local commits
git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f
瞧,现在你的叉子又回到了上游。
于 2015-11-07T00:08:04.260 回答