哈喽大家好,今天跟大家分享一个git操作流程也是新手开发时可能会出现的问题。忘记拉代码,但是自己的代码又写好了,还commit了,如何回溯并提交操作。
问题
开发中,代码已经修改完成,已经git add . 和git commit -m ''。git push失败,发现本地代码不是最新的了。此时应该如何操作会比较好。
解决思路
那么根据上面这个问题,我们可以先想一下标准流程。一般正常在我们开始之前应该是先拉取最新代码,然后再开始。那么此时是不会有冲突的。那么遇到上面这个问题,咱们就是要去把它恢复到那个状态。
解决方案有两种
- 重新在一个文件拉取最新代码,然后根据我们左侧的工作区域的修改目录里面内容,找到相对应文件内容,进行复制粘贴修改。(最主要是不敢动,这种方法简单明了,不太会的时候,偷偷含泪使用)

- 使用git的回溯重新提交。
第二种方法的具体实现操作
此时随便拿一个git仓库进行测试,此时文件中只有几个文本文件
1.在里面加入一个text.txt文件,并上传(建立一个上传记录:第一次上传text)
- 查看
git log
是否有记录

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

查看我们的提交记录,此时就可以清晰的了解到每次提交命名以及时间
因为我们前面的情况是,已经
git commit -m ''
这一步了,此时是可以在记录里看到这一步的。
git reset --mixed <当前的上一个log记录>
,一个比较重要的操作,回到我们git add .
之前,复制第一次上传的text.txt 这条记录的commit 那串字符
(回到了git add .
之前)
选中合适的那条记录的的字符串,复制下来,粘贴到
git reset --mixed <>
的<>
位置(不需要<>符号)
- 去保存我们的修改
保存修改 | |
---|---|
git add . |
将修改保存到暂存区 |
git stash save '起一个名字' |
将当前工作区和暂存区的修改保存起来,后续可以恢复(执行到这一步,原代码管理那一块就没有记录了) |
git stash list |
查看保存的记录,确保保存成功 |

7.[这一步一般可以不做] 我们可以回到某一个时间节点(,但是可以学习一下回到之前上传的某个时间节点再去拉取)
回到之前的某个时间节点然后再拉取 | |
---|---|
git reset --hard <commit_id> ()可以不做 |
通过指定 commit_id 可以强制将本地分支指向该提交<commit_id> |
git pull --rebase |
会先将远程分支的更新拉取下来,然后将本地提交应用到最新的远程分支上 |
- 取出缓存,此时本地为最新代码,然后将缓存取出来
git stash pop
之前修改的代码会自动加进来
此时就处于最新代码上修改的一个状态,可以看看,是否有冲突
- 最后就正常,
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 |