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在正常提交历史中再次提交,但反向提交,他的头继续向前移动。