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
相关推荐
IT_陈寒15 分钟前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
idcu37 分钟前
深入 Lyt.js 组件系统:L2 渲染引擎层的核心
前端·typescript
kyriewen1 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
这是程序猿1 小时前
Spring Boot自动配置详解
java·大数据·前端
文心快码BaiduComate1 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
还有多久拿退休金1 小时前
一张栈的图,治好你面试答不出 script 阻塞的病
前端·javascript
光辉GuangHui1 小时前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm
To_OC1 小时前
我终于搞懂 Claude Code 核心逻辑!90%的人都用错了模式
前端·ai编程
蓝宝石的傻话1 小时前
Headless浏览器的隐形陷阱:为什么你的AI自动化工具抓不到页面早期错误?
前端
irving同学462381 小时前
Node 后端实战:JWT 认证与生产级错误处理
前端·后端