git checkout或者git pull后本地未提交代码丢失问题解决

Git回滚教程:如何恢复未提交的代码
本文介绍了在使用Git时如何恢复未提交即被覆盖的代码。关键步骤包括通过git reflog找到丢失代码的版本,然后使用git reset --hard命令回滚到指定版本。特别提醒,必须先执行git add.及git commit才能记录版本变化。如果使用git reset --hard HEAD@{1}

前言

我们在使用git管理代码时通常要提交和拉取代码,但是某些时候存在误操作的行为。例如代码还没提交就做了checkout、pull动作,导致写了几天的代码没有备份就丢失或者被覆盖了

解决方法

  1. 恢复前提
    在执行git checkout master或者git pull命令前,执行过git add .及commit命令git commit -m "xxx",git工具才能给你记录你的版本变化(本地的),否则丢失代码可能无可挽救
  2. 回滚
    (1)查看历史本地git版本:git reflog。运行结果如下图所示,现在需要回滚到checkout之前的版本,也就是commit:add new page of xxx那一个版本,该版本索引是最前面的字符串 210ddf5
    在这里插入图片描述
    (2)运行回滚命令git reset --hard 210ddf5,运行结果如下图所示,那么就成功回滚了。
    在这里插入图片描述

排坑

  1. 有些博客写的回滚命令是git reset --hard HEAD@{1},其中花括号里面的数字对应回滚版本id。但是本人运行不能回滚,出现错误(error: unknown switch `e’)如下图。
    在这里插入图片描述

参考文献

git学习教程
通过git命令回滚
通过编译器的功能恢复文件的方法

在使用 Git 提交代码后,执行 `git pull` 时可能会遇到一些问题,例如冲突、权限错误、网络问题本地提交代码被覆盖等。以下是一些常见的排查和解决方法: ### 1. 检查本地是否有提交的更改 在执行 `git pull` 前,确保本地没有提交的更改。如果有提交的更改,Git 可能会拒绝拉取远程代码或导致更改被覆盖。可以通过以下命令查看当前状态: ```bash git status ``` 如果存在提交的更改,可以选择提交更改或暂存更改后再拉取代码: ```bash git add . git commit -m "提交说明" git pull origin master ``` ### 2. 解决冲突 如果在执行 `git pull` 时提示冲突,Git 会标记出冲突的文件。需要手动打开文件解决冲突,然后提交更改: ```bash # 解决冲突后 git add . git commit -m "解决冲突" git push origin master ``` ### 3. 恢复本地提交代码 如果在执行 `git checkout` 或 `git pull` 前提交代码,并且代码被覆盖或丢失,可以尝试使用 `git reflog` 查看历史操作记录,找到最近的提交版本并回滚: ```bash git reflog ``` 找到需要回滚的版本哈希值(如 `210ddf5`),然后执行: ```bash git reset --hard 210ddf5 ``` 如果 `git reflog` 中没有记录,且提交代码丢失,可能无法恢复,因此建议在操作前确保代码提交。 ### 4. 检查远程仓库是否存在 如果 `git pull` 提示远程仓库不存在或权限被拒绝,可能是远程仓库配置错误或权限问题。可以通过以下命令检查远程仓库地址: ```bash git remote -v ``` 如果地址错误,可以重新设置远程仓库地址: ```bash git remote set-url origin <新的远程仓库地址> ``` ### 5. 网络问题 如果 `git pull` 提示连接超时或无法访问远程仓库,可能是网络问题。可以尝试更换网络环境或检查代理设置。如果使用了代理,可以通过以下命令关闭代理: ```bash git config --global --unset http.proxy git config --global --unset https.proxy ``` ### 6. 使用 `git stash` 暂存更改 如果本地提交的更改,但不想立即提交,可以使用 `git stash` 暂存更改,再执行 `git pull`: ```bash git stash git pull origin master git stash pop ``` 这样可以避免直接覆盖本地更改。 ### 7. 检查分支是否存在 如果 `git pull` 提示分支不存在,可能是当前分支在远程仓库中已被删除。可以通过以下命令查看远程分支列表: ```bash git ls-remote --heads origin ``` 如果分支不存在,可以切换到其他分支或创建新分支: ```bash git checkout -b new_branch_name ``` ### 8. 更新 Git 版本 如果遇到 Git 命令执行异常,可能是 Git 版本过旧。建议更新到最新版本以确保兼容性。可以通过以下命令检查当前 Git 版本: ```bash git --version ``` 如果需要更新 Git,可以访问 [Git 官方网站](https://git-scm.com/)下载最新版本。 ### 9. 检查文件权限 如果 `git pull` 提示文件权限问题,可能是某些文件的权限设置不正确。可以通过以下命令更改文件权限: ```bash chmod -R 755 <文件路径> ``` ### 10. 强制拉取远程代码 如果本地更改与远程代码冲突,且希望强制使用远程代码覆盖本地更改,可以使用以下命令: ```bash git fetch --all git reset --hard origin/master ``` 此操作会丢弃本地所有更改,请谨慎使用。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值