Git 丢弃所有的改变,从上游拉

我如何取回上游回购,并使其取代主人?我只有一个分支在我的回购,这是主,我完全搞砸了,所以我基本上需要从上游重新开始。我认为 init 可以完成这项工作,但是有更简单的方法吗?

225593 次浏览

而在分会会长身上: git reset --hard origin/master

然后用 git gc做一些清理(在手册页中有更多关于这方面的内容)

更新: 您可能还需要做一个 git fetch origin(或者 git fetch origin master,如果您想 只有分支) ; 它不应该问题,如果您这样做之前或之后的重置。(谢谢@Eric-walker)

这里至少有两件事情可以做,你可以重新克隆远程回购,或者你可以 reset --hard到共同的祖先,然后做一个 pull,这将快进到远程主服务器上的最新提交。

具体来说,这里是 Nevik Rehnel 原始答案的一个简单延伸:

git reset --hard origin/master
git pull origin master

注意 : 使用 git reset --hard将丢弃任何未提交的更改,如果您是 git 的新手,那么很容易将自己与这个命令混淆,因此在继续之前,请确保您了解它将要做什么。

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

瞧,现在你的叉子又回到上游了。

你可以用一个简单的命令来完成:

git fetch --all && git reset --hard origin/master

备注:

1警告 你将失去所有的本地变化

如果你想要一个不同于 master的分支,你必须使用:

git fetch --all && git reset --hard origin/[BRANCH]

你可以用两个命令把它分开:

git fetch --all
git reset --hard origin/master

我终于意识到

git fetch --all && git reset --hard origin/master

应该是的

git fetch --all && git reset --hard origin/<branch_name>

相反(如果在不同的分支上工作)