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的推拉按钮上的数字不会改变的问题。

posted @ 2023-05-17 11:03  郭慕荣  阅读(181)  评论(0编辑  收藏  举报