SourceTree中“提交回滚”和“重置到此次提交”的区别
用一个例子来说明:
如:线上分支提交记录 1、2、3
目的需求:“提交回滚”到提交2、或重置到提交“2”的区别
一、提交回滚
若只需要撤销2的提交,1、3保留,则点击记录2右键“提交回滚”,则本地的2被回滚,推送后线上分支也回滚了。(恢复刚刚到操作:点击“提交回滚”后的右键再次“提交回滚”,则撤销了刚刚的回滚,即1、2、3都在)
注意: 提交回滚时,2的提交记录即2的文件状态,本地代码不存在了(当时改的代码已经没了),若需要保留2的记录,需提前保存或重新拉取分支。
二、重置提交
若点击提交记录2右键“重置到本次提交”,有3钟选择方案:
·
1.软合并-保存所有本地改动(推荐)
文件回滚到以前的版本,此文件更改是将文件回滚回去的反向更改,最后将这些文件提交就回到了提交2的状态。
这种回滚方式是安全的,文件会根据之前提交的变化更改文件回到原来的状态,会在版本树上留下记录,即所有的更改都有记录可查。
·
2.混合合并-保存工作副本但重置索引
(此时显示有文件可以从远程拉取下来,如果拉取下来就会像什么都没有发生一样,前面的重置操作会被抵消掉)
该重置会将本地代码回到2提交完成后的状态,即3的提交记录-文件状态(被修改的)保留在本地等待提交。
如果后悔重置可以将其重新提交,不过会被整合成一次提交,如果不需要全部提交则根据需求选择重置或者移除已修改的文件,达到部分