首页 > 编程知识 正文

gitreset,git回滚到指定版本提交

时间:2023-05-06 00:15:52 阅读:17360 作者:682

一、问题说明

在利用github实现多人联合程序开发的过程中,有时会发生错误提交。 在这种情况下,我们希望取消提交操作,并将程序恢复到提交前的状态。 本文总结了回滚(reset )、反向(revert )两种解决方法。

二.背景知识

git版本控制和HEAD理解

每次使用git时,git都会自动将它们连接到时间线。 这个时间线是分支。 如果没有新分支,则只有一个时间线,即一个。 在Git中,此分支称为主分支,也就是主分支。 有一个指向当前分支的头指针。 如果只有一个分支,则指向master,master指向最新提交。 每个版本都有自己的版本信息,如版本号和版本名。 假设只有一个分支,如下图所示。

三.解决办法方法一:git reset

原理: git reset的作用是修改头的位置,如下图所示。 这意味着将HEAD指向的位置更改为以前存在的版本。 假设您要返回版本1。

应用方案:如果您想恢复到以前提交的版本,并且在该版本之后提交的版本不需要我们,可以使用此方法。

具体操作:

1 .显示版本号:

可以使用命令" git log "显示以下信息:

也可以在github网站上找到:

2 .使用“获取重置- -硬件目标版本号”命令回滚版本:

在“git log”中查看版本信息时,本地HEAD指向以前的版本。

3 .使用" git push-f "提交更改:

此时,使用“git push”将报告错误。 因为本地库的HEAD指向的版本比远程库的旧:

所以我们可以用“git push -f”强制推上来:

在github图形界面中,远程库的头也指向目标版本。

回滚成功!

方法二:git revert

原理: git revert用于“反向”版本以取消版本修改。 例如,我们提交了三个版本(版本1、版本2、版本3 ),但突然发现版本2不行(例如,有错误),我们想取消版本2,但版本3的git revert命令可逆转版本2以生成新的版本4,且可在此版本4中保留版本3的东西,但仍可撤销版本2的东西。 如下图所示。

适用方案:如果您想取消以前的版本,但希望保留目标版本之后的版本,则记录此整个版本更改过程非常有用。

具体操作:

例如,库目前有三个文件: READ.md、text.txt和text2.txt。

1 .显示版本号:

可从命令行查看(输入git log ) :

如图所示,最近的两个版本分别添加了add text.txt,即文件text.txt。 添加了add text2.txt,文件text2.txt。 此时,我们不需要名为text.txt的文件。 那就是我不想要“add text.txt”版本的操作。 它可以通过反转“add text.txt”的版本来实现。

也可以通过github站点的图形界面显示版本号。

2 .反转“git revert-n版本号”,按“git commit -m版本名”提交:

(1)相反,使用“git revert -n版本号”命令。 以下命令将版本号为8b89621的版本反向。

git revert-n8b 89621019 c 9ad c 6fc 4d 242 CD 41 daeb 13 aeb 9861注意:此处可能发生冲突,必须手动修复冲突文件。 然后,git add文件名。

)2)提交并使用“git commit -m版本名称”。 示例:

git commit -m 'revert add text.txt '此时,您可以在“git log”中查看本地版本信息。 可以看到生成了很多新版本。 此版本反转了add text.txt版本,但保留了add text2.txt版本

3 .使用“git push”向上推动远程库:

git push

要显示github中显示的远程库版本信息,请:

现在查看仓库中的文件,剩下READ.md、text2.txt这两个

相反会成功!

最重要的一点: revert是回滚某个commit,而不是回滚“退出”某个commit或回滚某个commit,但保留了后续版本。

在` git revert commit_id '之后,请再次反向操作该id的内容,而不是回滚到该id的内容。 例如,a操作添加“haha”,commit添加a,b操作添加“xixi”,commit b。 现在,我想回滚到只添加了" haha "的内容,因为需要删除" xixi ",也就是反向操作b,所以应该是` git revert b的commit_id `。 “git revert”翻译成“逆转、逆转”而不是回滚应该更容易理解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。