git回滚代码
1、未提交
未提交有以下两种情况:
1)已经在工作区修改了文件,但还未执行 git add 提交到暂存区。
2)已经执行了 git add 提交到暂存作,但还未执行 git commit 提交本地仓库。
这时候回退:
git reset --hard
这样等于清空了暂存区和工作区,本地仓库回退到了最新的提交状态。
2、已提交未推送
这种情况是指已经执行了 git add 提交到暂存区操作,又执行了 git commit 提交本地仓库,但还未 git push 推送到远程仓库。
2.1 上个版本回退:
git reset --hard HEAD^
2.2 多个版本回退:
git reset --hard HEAD~N
N:代表数字,要回退的次数。
2.3 指定版本回退:
git reset --hard <commit_id>
3、已推送
这种情况是指已经执行了 git add 提交到暂存区操作,又执行了 git commit 提交本地仓库,还执行 git push 推送到远程仓库。
参考上面的 2.1~2.4 的方法,先强制回退到本地仓库到上 N 个版本,再进行强制推送到远程仓库。
回退到上个版本示例:
git reset --hard HEAD^
git push -f
总结
第一种情况一般在工具上很容易操作,比如在 Sourcetree:
但 2、3 种情况在工具上面就没法办法操作了,至少在 Sourcetree 上是不行,需要在命令行进行回退,如果大家有知道的也可以分享下。
选择在响应的分支上面,选择如图选中的按钮,可以解决SourceTree的推拉按钮上的数字不会改变的问题。
郭慕荣博客园
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-05-17 gradle implementation、compileOnly、api
2021-05-17 TCP三次握手四次挥手常见面试题