300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > git 代码回滚_git代码版本管理(1)——git版本回滚

git 代码回滚_git代码版本管理(1)——git版本回滚

时间:2019-10-03 15:55:02

相关推荐

git 代码回滚_git代码版本管理(1)——git版本回滚

git代码版本管理(1)——git版本回滚

1、问题背景

在利用github、gitlab、Gitee等代码管理器中对代码的管理,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交之前的样子。 本文总结了两种解决方法:回退(reset)、反做(revert)。 push前与push后。

2、git提交小知识

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

3、解决方式

3.1 还没有push推送到远端、只执行了本地commit提交

[root@db test]# ls # 当前本地仓库下的文件README.md 第一次提交.txt 第二次提交.txt[root@db test]# touch 第三次提交.txt # 新建一个文件[root@db test]# git add .[root@db test]# git commit -m '3' # 本地提交[master aee4c30] 3 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\347\254\254\344\270\211\346\254\241\346\217\220\344\272\24 4.txt"[root@db test]# git log # 查看所有提交信息commit aee4c30c17b5c916249bdcc180d3f9a912222198Author: test Date: Mon Oct 12 16:25:02 +0800 3commit fa8f987d9ac5f37b7e77cbf519825b712ee3b03aAuthor: test Date: Mon Oct 12 16:13:31 +0800 2commit ccedae5cc29205f44c2164b8f541bd28dd1197edAuthor: test Date: Mon Oct 12 16:12:49 +0800 1commit 729fd8eaa8f7ec30784bd2cdafbcc262d2f9f039Author: test Date: Mon Oct 12 16:11:33 +0800 add README[root@db test]# git reset --hard fa8f987d9ac5f37b7e77cbf519825b712ee3b03a # 回滚到指定版本(我这里是回滚到上一个提交的commit_id)HEAD is now at fa8f987 2[root@db test]# ls # 再次查看README.md 第一次提交.txt 第二次提交.txt[root@db test]#[root@db test]# git log # 再次查看所有提交信息发现回滚成功commit fa8f987d9ac5f37b7e77cbf519825b712ee3b03aAuthor: test Date: Mon Oct 12 16:13:31 +0800 2commit ccedae5cc29205f44c2164b8f541bd28dd1197edAuthor: test Date: Mon Oct 12 16:12:49 +0800 1commit 729fd8eaa8f7ec30784bd2cdafbcc262d2f9f039Author: test Date: Mon Oct 12 16:11:33 +0800 add README

3.2 push推送至远端,使用 reset 回滚

3.2.1适用场景:

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

3.2.2reset 回滚原理:

git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,不会保存此版本后的提交,如下图

3.2.3开始执行回滚:

①. 查看版本号:

git log

②. 使用“git reset --hard 目标版本号”命令将版本回退:

git reset --hard ccedae5cc29205f44c2164b8f541bd28dd1197ed

③.使用“git push -f”提交更改:

git push -f

④.验证:

至此使用reset回退成功!

3.3 push推送至远端,使用 revert回滚

3.3.1适用场景:

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

3.3.2revert回滚原理:

git revert的作用是把之前提交的版本作为一个新版本再次提交(提交位置为当前版本的后一个位置,如想要回滚到版本二,当前为版本三,则重新提交的为版本四,不会像reset删除回滚之后的版本,只会还原版本二所提交的内容),以达到撤销该版本的修改的目的。如下图所示:

3.2.3开始执行回滚:

①. 查看版本号:

git log

②.使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交:

git revert -n ccedae5cc29205f44c2164b8f541bd28dd1197edgit commit -m "revert 1 or commit 4"

③.使用“git push”提交更改:

git push

④.验证:

1、可是用 git log查看2、可以在图形化页面查看

反做成功!

4、其它值得注意的参数(本文回滚用的是hard)

git reset --hard HEAD^ 回退到上个版本git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前git reset --hard commit_id退到/进到 指定commit的sha码git push origin HEAD --force 强推命令git reset --mixed此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息git reset --soft 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可git reset --hard 彻底回退到某个版本,本地的源码也会变为上一个版本的内容

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。