误在已有分支执行git switch -C命令,如何恢复原分支?
恢复被
git switch -C覆盖的本地分支 git switch -C foo 会强制把已存在的foo分支重置为当前所在分支的HEAD状态,直接覆盖了原分支的指针。但Git的reflog会记录所有分支的操作历史,咱们可以通过它找回原来的foo分支:
1. 查看foo分支的操作日志
先执行这条命令,找到原foo分支的提交记录:
git reflog show foo
输出里会有类似这样的条目:
a1b2c3d foo@{0}: reset moving to HEAD x9y8z7w foo@{1}: commit: 原foo分支最后一次提交的描述
这里foo@{1}就是你误操作前的原分支状态对应的位置,对应的哈希值(比如x9y8z7w)就是原分支的最后提交。
2. 恢复原foo分支
用找到的哈希值重置foo分支:
git switch foo git reset --hard x9y8z7w
或者更直接的方式,不用先切换分支:
git branch -f foo foo@{1} git switch foo
3. 确认恢复成功
跑一下git log看看foo分支的提交历史,确认已经回到你预期的状态了。
内容的提问来源于stack exchange,提问作者boguslavsky
相关产品推荐
相关产品推荐

