git代码上传后,如何回滚版本?

有一天你会遇到以下问题。

(1)修改完代码,赶紧提交。上网发现不对劲怎么办?快速回滚。

(2)代码测试后没有问题,但是上线后发现自己的修改影响了之前正常运行的代码,必须回滚。

这些问题在开发中非常普遍,所以取消提交、回滚甚至返回到之前版本的git就显得尤为重要。

大致分为以下两种情况:

1.不要推。

这发生在您的本地代码仓库中。可能你在添加完add,commit,准备取消提交之后,发现代码有问题。使用以下命令。

重置

git重置[ -软| -混合| -硬

以上有三种常见类型。

-混合

将保留源代码,但会将git提交和索引信息返回到某个版本。

Git重置默认为混合模式。

Git reset - mixed相当于Git reset。

-柔软

保留源代码,只将提交信息回滚到某个版本。它不涉及索引的回滚。如果还需要提交,直接提交就好了。

-很难

源代码也会回退到某个版本,提交和索引都会回退到某个版本。(注意这种方式是改变本地代码库的源代码。)

当然,有些人也会用力按reset

所以,在这种情况下,你应该使用以下方法。

2.它已经被推动了

对于已经推送到线上仓库的代码,实际上是想同时回滚本地代码和线上代码,回滚到指定的版本。线上和线下代码一致。您需要使用以下命令。

归还

Git revert用于反转提交,执行evert命令时工作树必须是干净的。

Git revert使用新提交来消除历史提交所做的任何更改。

还原后,您的本地代码将回滚到指定的版本历史。这时候可以通过git push更新在线代码(不会出现reset这样的冲突)。

要使用revert,首先需要找到想要回滚的版本的唯一提交识别码,可以用git日志查看,也可以在adgit搭建的web环境的历史提交记录中查看。

git revert c 011 eb3c 20 ba 6 FB 38 cc 94 Fe 5a 8 DDA 366 a 3990 c 61

通常,前几个就够了。

git revert c011eb3

Git revert是用新的提交回滚之前的提交,git reset是直接删除指定的提交。

看似效果一样,其实完全不一样。

首先:

我们上面说的是,如果你已经推送到在线代码库,并且reset删除了指定的commit,你的git推可能会导致很多冲突。但是revert不会。

第二:

如果将来需要合并现有分支和历史分支,重置恢复部分的代码仍然会出现在历史分支中,但是反方向提交的提交不会出现在历史分支中。

第三:

Reset删除正常提交历史中的指定提交,当头向后移动时,revert在正常提交历史中再次提交,但反向提交,他的头继续向前移动。