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
相关推荐
^小桃冰茶3 小时前
CSS知识总结
前端·css
巴巴_羊4 小时前
yarn npm pnpm
前端·npm·node.js
chéng ௹6 小时前
vue2 上传pdf,拖拽盖章,下载图片
前端·css·pdf
嗯.~6 小时前
【无标题】如何在sheel中运行Spark
前端·javascript·c#
A_aspectJ8 小时前
【Bootstrap V4系列】学习入门教程之 组件-输入组(Input group)
前端·css·学习·bootstrap·html
兆。9 小时前
电子商城后台管理平台-Flask Vue项目开发
前端·vue.js·后端·python·flask
互联网搬砖老肖9 小时前
Web 架构之负载均衡全解析
前端·架构·负载均衡
sunbyte10 小时前
Tailwind CSS v4 主题化实践入门(自定义 Theme + 主题模式切换)✨
前端·javascript·css·tailwindcss
大学生小郑10 小时前
Go语言八股之channel详解
面试·golang
湛海不过深蓝11 小时前
【css】css统一设置变量
前端·css