如何恢复被误操作影响的Git分支,回退非预期的提交变更?
Git分支改动恢复操作方案
问题根因
你在hello-feature分支执行git add后没有提交改动就直接新建并切换到hello-feature-copy分支,未提交的改动不属于任何分支,会随工作区同步到新切换的分支,后续你将所有改动提交到了hello-feature-copy分支,因此原hello-feature分支无法看到对应改动。
恢复步骤
根据你的需求选择对应操作即可:
需求1:hello-feature和hello-feature-copy两个分支都保留本次改动
- 切换到原开发分支:
git checkout hello-feature - 合并拷贝分支的提交内容:
git merge hello-feature-copy
需求2:仅hello-feature保留改动,hello-feature-copy不需要本次提交记录
- 切换到拷贝分支:
git checkout hello-feature-copy - 撤销最近一次提交,改动保留在工作区:
git reset HEAD~1 - 暂存所有改动并储藏:
git add . && git stash - 切回原开发分支:
git checkout hello-feature - 恢复储藏的改动到当前分支:
git stash pop - 后续可重新新建
hello-feature-copy分支提交要共享给同事的内容即可
兜底方案
如果上述操作无法找到对应改动,可执行git reflog查看本地所有git操作记录,找到对应提交的哈希值后,执行git cherry-pick <提交哈希值>即可把对应提交迁移到当前分支。
内容的提问来源于stack exchange,提问作者uber
相关产品推荐
相关产品推荐

