Revert是撤销操作,类似于Ctrl+Z,不同的是,Revert是以版本为单位,撤销整个版本。可以这样理解Revert操作,假如有V1、V2、V3、V4、V5五个版本,Revert撤销V3版本,实际上就是合并V2版本和V5版本,并对V2版本和V5版本中都存在的有差异文件提示冲突。

举例说明

(1)如果我在版本V1上新建A、B两个文件提交后成版本V2,在版本V2上新建C、D两个文件提交后成版本V3。我用Revert撤销版本V2的内容。点击Revert后,A、B文件消失,因为A、B是我新建的文件,但是C、D文件会保留下来。可以看出来,Revert只会撤销选定版本的修改。

(2)如果我在版本V1上修改A、C提交后成版本V2,在版本V2上修改C、D提交后成版本V3。我用Revert撤销版本V2的内容,这时代码库的结构是:A会变回版本V1的内容,D仍然是版本V3的内容,但是文件C会产生冲突。

Revert正确姿势

(1)撤销当前操作是Revert的正确选择,千万不要尝试跨版本Revert。就像上面提到的五个版本,你应该首先Revert V5版本,然后V4版本,一层一层往下执行,而不要一来就Revert V3版本,这样做的好处是不会导致代码混乱。如果想把代码回滚到V3版本,那么执行两次Revert操作就可以,先Revert V5版本,然后Revert V4版本。不过在实际工作中不会这么做。

e76b340189a02ed71097981818d225e6.png

(2)在实际工作中用的最多的是撤销工作区或暂存区的代码。比如我在V5版本上修改了一些代码,但是还没有提交,这时我发现代码有问题,需要回退到V5版本,这时Revert就可以派上大用场。

4fb94aab1bc5e00923b8a3c654494421.png

扩展阅读

git本地代码库包含工作区、暂存区(index:add之后)、版本库(HEAD:commit之后)

本地代码都保存在工作区中,但是代码有状态之分,简单说下状态流转:新增加的文件为Untracked(未跟踪)状态,执行git add后变成Staged(已暂存)状态,Staged状态执行git commit则将修改同步到版本库中,最后通过push将版本库中的文件上传到远程仓库。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐