用远程分支覆盖我的本地分支

我完全fubar'd我的本地分支,并希望重新开始。 服务器上的版本是正确的。

我不想重新开始,我想用我的本地历史来解决我的巨大麻烦。 (如果必须,我可以。)

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

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

首先,在当前位置创build一个新的分支(以防你需要旧的“搞砸”历史):

 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将分支头git reset为与上游回购分支分支的最后一个分支。 使用git branch -v查找上游分支的sha1 id,并使用git reset SHA1ID重置你的分支。 那么你应该可以做一个git checkout来放弃它在目录中留下的变化。

注意:一定要在备份的回购上做这件事。 这样,你可以保证你自己的工作正确。 或者,如果没有,则需要备份才能恢复。