Java开发工具Idea必备技能之Revert操作
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版本。不过在实际工作中不会这么做。
(2)在实际工作中用得最多的是撤销工作区或暂存区的代码。比如我在V5版本上修改了一些代码,但是还没有提交,这时我发现代码有问题,需要回退到V5版本,这时Revert就可以派上大用场。
扩展阅读
git本地代码库包含工作区、暂存区(index:add之后)、版本库(HEAD:commit之后)
本地代码都保存在工作区中,但是代码有状态之分,简单说下状态流转:新增加的文件为Untracked(未跟踪)状态,执行git add后变成Staged(已暂存)状态,Staged状态执行git commit则将修改同步到版本库中,最后通过push将版本库中的文件上传到远程仓库。