执行git pull --rebase后本地变更丢失,分支状态异常求助
解决Git rebase后本地变更丢失、分支状态异常及合并问题
第一步:找回丢失的本地变更
Git所有操作都会留下痕迹,按以下步骤恢复:
- 打开终端输入
git reflog,这会列出你所有的Git操作历史,找到执行git pull --rebase之前的提交哈希值(一串字母数字组合)。 - 输入
git reset --hard <对应哈希值>,即可回到rebase前的状态,丢失的变更会恢复。
第二步:修复分支状态异常
从截图1的状态来看,当前分支处于rebase中断状态,先清理这个异常状态:
- 输入
git rebase --abort,终止当前的rebase操作,回到正常分支状态。 - 输入
git branch确认当前分支,若在master分支,切换到工作分支:git checkout loginAndRegister。 - 输入
git status检查分支变更,有未提交内容的话执行git add . && git commit -m "保存登录注册功能变更"。
第三步:正确合并分支并推送master
之前推master被拒,是因为远程master代码比你本地新,用新手友好的merge方式操作:
- 切换到master分支:
git checkout master - 拉取远程最新master代码:
git pull origin master(将远程更新合并到本地master,不会丢失代码) - 切回loginAndRegister分支:
git checkout loginAndRegister,确保所有本地变更都已提交 - 再次切回master,执行合并:
git merge loginAndRegister - 如果出现合并冲突,打开冲突文件,删除
<<<<<<<、=======、>>>>>>>标记,保留需要的代码 - 冲突解决后执行
git add <冲突文件名>,再git commit完成合并 - 最后推送master:
git push origin master
新手避坑提醒
- 别随意使用
git pull --rebase,这是变基操作会改写提交历史,新手极易丢失代码,用普通git pull(默认merge模式)更安全。 - 永远不要直接在master分支写代码,所有功能开发都在单独分支(如loginAndRegister)完成,测试无误后再合并到master。
内容的提问来源于stack exchange,提问作者Gaurav
相关产品推荐
相关产品推荐

