178

如何获取上游 repo 并使其替换 master?我的repo只有一个分支,就是master,完全搞砸了,所以我基本上需要从上游重新开始。我认为 init 会完成这项工作,但有没有更简单的方法?

4

5 回答 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 回答