用远程分支覆盖我的本地分支
我完全fubar'd我的本地分支,并希望重新开始。 服务器上的版本是正确的。
我不想重新开始,我想用我的本地历史来解决我的巨大麻烦。 (如果必须,我可以。)
git fetch branchname
和git 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
来放弃它在目录中留下的变化。
注意:一定要在备份的回购上做这件事。 这样,你可以保证你自己的工作正确。 或者,如果没有,则需要备份才能恢复。