git push 受阻,原是未拉取代码惹的祸

哈喽大家好,今天跟大家分享一个git操作流程也是新手开发时可能会出现的问题。忘记拉代码,但是自己的代码又写好了,还commit了,如何回溯并提交操作。

问题

开发中,代码已经修改完成,已经git add . 和git commit -m ''。git push失败,发现本地代码不是最新的了。此时应该如何操作会比较好。

解决思路

那么根据上面这个问题,我们可以先想一下标准流程。一般正常在我们开始之前应该是先拉取最新代码,然后再开始。那么此时是不会有冲突的。那么遇到上面这个问题,咱们就是要去把它恢复到那个状态。

解决方案有两种

  1. 重新在一个文件拉取最新代码,然后根据我们左侧的工作区域的修改目录里面内容,找到相对应文件内容,进行复制粘贴修改。(最主要是不敢动,这种方法简单明了,不太会的时候,偷偷含泪使用)
  1. 使用git的回溯重新提交。

第二种方法的具体实现操作

此时随便拿一个git仓库进行测试,此时文件中只有几个文本文件

1.在里面加入一个text.txt文件,并上传(建立一个上传记录:第一次上传text)

  1. 查看git log 是否有记录
  1. 那么此刻我在text.txt中进行修改(我们假设此时的上传是没有拉取最新代码报错的情况)也就是git commit -m ''的操作,但是后续git push没有成功

  1. git log(查看commit记录情况)

查看我们的提交记录,此时就可以清晰的了解到每次提交命名以及时间

因为我们前面的情况是,已经git commit -m ''这一步了,此时是可以在记录里看到这一步的。

  1. git reset --mixed <当前的上一个log记录>,一个比较重要的操作,回到我们git add .之前,复制第一次上传的text.txt 这条记录的 commit 那串字符(回到了git add .之前)

选中合适的那条记录的的字符串,复制下来,粘贴到git reset --mixed <><>位置(不需要<>符号)

  1. 去保存我们的修改
保存修改
git add . 将修改保存到暂存区
git stash save '起一个名字' 将当前工作区和暂存区的修改保存起来,后续可以恢复(执行到这一步,原代码管理那一块就没有记录了)
git stash list 查看保存的记录,确保保存成功

7.[这一步一般可以不做] 我们可以回到某一个时间节点(,但是可以学习一下回到之前上传的某个时间节点再去拉取)

回到之前的某个时间节点然后再拉取
git reset --hard <commit_id>()可以不做 通过指定 commit_id 可以强制将本地分支指向该提交<commit_id>
git pull --rebase 会先将远程分支的更新拉取下来,然后将本地提交应用到最新的远程分支上
  1. 取出缓存,此时本地为最新代码,然后将缓存取出来 git stash pop 之前修改的代码会自动加进来


此时就处于最新代码上修改的一个状态,可以看看,是否有冲突

  1. 最后就正常,git add . / git commit -m '' / git push 提交

总结

本章主要是为了处理,开发过程中,没有拉取最新代码就修改提交无法提交的问题。

简化步骤 此时应该是 git add . / git commit -m '' 情况之后(此时左侧工具栏信息没有,处于同步提交)
git log 查看提交记录,去获取 commit_id
git reset --mixed commit_id 会将暂存区和工作区状态恢复到指定提交(此时左侧工具栏信息恢复)
git add . / git stash save 将当前工作区和暂存区的修改保存起来(此时左侧工具栏信息没有了)
git pull --rebase 拉取最新代码
git stash pop 将之前 git stash save 保存的修改重新应用到工作区(此时左侧工具栏信息恢复,查看是否有冲突)
正常提交 git add . / git commit -m '' / git push
相关推荐
尽兴-8 分钟前
[特殊字符] 微前端部署实战:Nginx 配置 HTTPS 与 CORS 跨域解决方案(示例版)
前端·nginx·https·跨域·cors·chrom
JIngJaneIL1 小时前
助农惠农服务平台|助农服务系统|基于SprinBoot+vue的助农服务系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·助农惠农服务平台
云外天ノ☼1 小时前
待办事项全栈实现:Vue3 + Node.js (Koa) + MySQL深度整合,构建生产级任务管理系统的技术实践
前端·数据库·vue.js·mysql·vue3·koa·jwt认证
沐怡旸1 小时前
【穿越Effective C++】条款15:在资源管理类中提供对原始资源的访问——封装与兼容性的平衡艺术
c++·面试
一位搞嵌入式的 genius1 小时前
前端实战开发(三):Vue+Pinia中三大核心问题解决方案!!!
前端·javascript·vue.js·前端实战
塞纳河畔的歌1 小时前
保姆级教程 | 麒麟系统安装Edge浏览器
前端·edge
多睡觉觉1 小时前
数据字典:从"猜谜游戏"到"优雅编程"的奇幻之旅
前端
嗝屁小孩纸1 小时前
开发集成热门小游戏(vue+js)
前端·javascript·vue.js
赛博切图仔1 小时前
深入理解 package.json:前端项目的 “身份证“
前端·javascript
UIUV1 小时前
JavaScript 学习笔记:深入理解 map() 方法与面向对象特性
前端·javascript·代码规范