一、历史版本拉分支
假如我们要从3.0回退到1.0版本拉分支修改,那么在log找到1.0提交记录右键选择checkout,点击checkout之后当前工作区即回退到该提交的历史版本中。
然后,我们对1.0再做修改生成1.1修复版本并提交。此时的提交有丢失的风险,因为当前的head指针和分支指针处于分离状态, 直接在提交上进行的修改的版本在分支版本的前面,分支指针还在3.0版本上, 没有任何分支在跟踪当前版本,如果checkout了当前分支,只能checkout到原分支记录的3.0版本,丢了当前1.1版本。只要新建分支来跟踪1.1版本就可以了。
创建分支1.0fix分支来跟踪1.0的1.1,1.2版本后,变成两个分支。
如果我们要继续开发原分支(3.0),只要直接切换回原分支就行。我们提交4.0版本可以看到,4.0版本并不包含1.0fix分支上的1.1的修改,不受其影响。
如果想将1.2修改分支合并进来,直接合并分支就行。合并之后如图1.0fix分支并入当前分支。
二、Revert回撤, 执行某次提交的逆操作
谨慎使用revert回撤, revert是某一次提交的逆向操作,例如新增文件想撤回,就revert这次提交,revert之后的新增的addfile被删除了,但是addfile之后revert之前的历史记录,不受影响,相当于仅仅做了一次addfile的逆操作。
三、reset回退
注意尽量不要使用reset回退,reset会将reset之后发生的历史提交都抛弃掉!整个版本回退到指定版本,删除到该版本之后的修改记录。