<导航

git回滚代码命令

一、reset命令 

回滚代码是我们程序员经常要操作的,如果你喜欢用 Git 命令行,也可以使用 git revert 这种,但它是有回滚痕迹的,会多一个提交记录,今天就介绍一些没有痕迹的理想状态的回退。

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>

2.4 直接回退到远程最新版本:

git reset --hard origin/master

注意:以上方式回滚后提交的东西也就没有了,如果只是想撤销提交,需要保留可以通过git revert命令操作一下。

3、已推送

这种情况是指已经执行了 git add 提交到暂存区操作,又执行了 git commit 提交本地仓库,还执行 git push 推送到远程仓库。

参考上面的 2.1~2.4 的方法,先强制回退到本地仓库到上 N 个版本,再进行强制推送到远程仓库。

回退到上个版本示例:

git reset --hard HEAD^
git push -f

二、Git恢复之前版本的两种方法reset、revert

  使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)。每个版本都会有自己的版本信息,如特有的版本号、版本名等。如下图,假设只有一个分支:

方法一:git reset

原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,如下图所示,假设我们要回退到版本一:

适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

方法二:git revert

原理: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。如下图所示:

适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。


 

原文链接:https://blog.csdn.net/xiaowanzi_zj/article/details/121394466

前面说的版本回退git reset ;这种重置法,假如有 A,B,C,D四个版本,假如从D版本回退到B版本,Head指针一换,C,D版本没了。

假如我们依然需要,C,D版本,我们可以用git revert commit;

git revert功能更加强大,比如我们删除了一些提交操作,都可以撤销,把删除的文件找回;

他的底层是会搞出一个新版本,然后HEAD指针指向他;

比如我们删除一个代码文件,

然后找到一个删除提交操作行,右击->revert commit


三、idea如何使用【Revert Commit】

1.先说结论

针对任何一个代码记录都进行Revert Commit操作:
①不管此记录是commit未push,还是已经push过;
②不管此记录之后有没有其他的多次commit或push’记录
总之都会生成一个新的Revert "xxx"记录,接下来你想commit就commit,想push就push。

2.操作步骤

1.我有三个记录

这三个记录可以是只commit未push,也可以是push过,无所谓。

2.随便选择一个进行Revert Commit,我选择"test1"

3.点击Revert Commit立刻弹框如图

4.然后你点击Commit按钮,记录窗口会立即显示一个新的记录

5.这会你push就行

 

 

参考文章:

https://mp.weixin.qq.com/s/b7jlfhvVNeqPAcHlppURrg

https://blog.csdn.net/yxlshk/article/details/79944535

https://blog.csdn.net/qq_23167527/article/details/110149722

posted @ 2022-04-24 17:36  字节悦动  阅读(5615)  评论(0编辑  收藏  举报