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
相关推荐
华仔啊2 小时前
前端必看!12个JS神级简写技巧,代码效率直接飙升80%,告别加班!
前端·javascript
excel2 小时前
dep.ts 逐行解读
前端·javascript·vue.js
爱上妖精的尾巴2 小时前
5-20 WPS JS宏 every与some数组的[与或]迭代(数组的逻辑判断)
开发语言·前端·javascript·wps·js宏·jsa
excel2 小时前
Vue3 响应式核心源码全解析:Dep、Link 与 track/trigger 完整执行机制详解
前端
前端大卫3 小时前
一个关于时区的线上问题
前端·javascript·vue.js
whltaoin3 小时前
中秋赏月互动页面:用前端技术演绎传统节日之美
前端·javascript·html·css3·中秋主题前端
UrbanJazzerati4 小时前
考研英语深挖 “I wonder if it isn't...” —— 否定式疑问背后的肯定式锋利观点
面试
IT派同学4 小时前
TableWiz诞生记:一个被表格合并逼疯的程序员如何自救
前端·vue.js
双向335 小时前
CodeBuddy Code + 腾讯混元打造"AI识菜通"
面试