用远程分支覆盖本地分支

我已经完全混乱了我的本地分支,并希望重新开始。在服务器上的版本是正确的。

我不想重新开始,我想用我的本地历史来弥补我的大错。如果有必要,我可以

git fetch branchnamegit pull branchname都不起作用。然而,我得到的消息是“ 最新的”,我的本地版本与服务器的版本不匹配。

git pull origin/branchname给我一个“ 没找到”错误。

130442 次浏览

您的本地分支可能已经对其进行了修改,您希望丢弃它。要做到这一点,您将需要使用 git reset来重置分支头的最后一点,您从上游回购的分支。使用 git branch -v找到上游分支的 sha1 id,并使用 git reset SHA1ID重置分支。然后,您应该能够执行 git checkout来丢弃它在您的目录中留下的更改。

注意: 总是在备份的回购中这样做。这样你就可以确保你自己,它的工作正确。如果没有,你还有备份。

首先,在当前位置创建一个新分支(以防你需要旧的“糟糕”历史记录) :

git branch fubar-pin

更新远程分支列表并同步新提交:

git fetch --all

然后,将分支重置到原点/分支指向的位置:

git reset --hard origin/branch

小心 ,这将删除您的 工作树的任何更改!

当我搞砸了我的本地分支时,我只需要重新命名我的损坏的分支,然后再次检查/分支上游分支:

git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch

然后,如果你确定你不想从你的旧分支中得到任何东西,把它移除:

git branch -D branch-old

但通常我会把旧树枝留在附近,以防万一。

git reset --hard

这是将所有本地更改还原到原始头