用一个例子来说明:
如:线上分支提交记录 1、2、3
目的需求:“提交回滚”到提交2、或重置到提交“2”的区别
若只需要撤销2的提交,1、3保留,则点击记录2右键“提交回滚”,则本地的2被回滚,推送后线上分支也回滚了。(恢复刚刚到操作:点击“提交回滚”后的右键再次“提交回滚”,则撤销了刚刚的回滚,即1、2、3都在)
注意: 提交回滚时,2的提交记录即2的文件状态,本地代码不存在了(当时改的代码已经没了),若需要保留2的记录,需提前保存或重新拉取分支。
若点击提交记录2右键“重置到本次提交”,有3钟选择方案:
·
文件回滚到以前的版本,此文件更改是将文件回滚回去的反向更改,最后将这些文件提交就回到了提交2的状态。
这种回滚方式是安全的,文件会根据之前提交的变化更改文件回到原来的状态,会在版本树上留下记录,即所有的更改都有记录可查。
·
(此时显示有文件可以从远程拉取下来,如果拉取下来就会像什么都没有发生一样,前面的重置操作会被抵消掉)
该重置会将本地代码回到2提交完成后的状态,即3的提交记录-文件状态(被修改的)保留在本地等待提交。
如果后悔重置可以将其重新提交,不过会被整合成一次提交,如果不需要全部提交则根据需求选择重置或者移除已修改的文件,达到部分代码取消提交的需求(需谨慎!!!)。
注意: 该更改后的提交推送到线上分支需要勾选“强制推送”,才能将线上代码和更改后的本地代码一样。
·
高风险的操作: 选择“强行合并-丢弃所有工作副本改动”,此时本地仓库的改动已删掉,没有文件状态,本地仓库和“2”推送之前的版本是一样的,只需要强制推送当前本地仓库到远程即可
·
SourceTree MAC中文版本没有“强制推送”选项,需要将语言更改为英文后重启SourceTree
步骤:偏好设置-高级-勾选允许强制推送
然后在推送时就有“强制推送”的选项了,建议用完关闭“允许强制推送”选项。
强行推送有风险!!!
·
此文章为个人开发时记录,有时时间有限,无法深入研究,若看到此文章后有其他见解或解决方式,欢迎留言交流
————————————————
版权声明:转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/weixin_44158429/article/details/128145240