
简单说:SourceTree 里的「回滚提交」= 撤销某次提交,并且生成一条新的提交记录。
一、它到底做了什么?
假设你有这样的提交历史:
A → B → C → D
你对 D 点右键 → 回滚提交...
结果会是:
A → B → C → D → D'
D'是一条新提交- 内容刚好和 D 相反:D 加的代码会被删掉,D 删的代码会恢复
- 原来的 D 还在历史里,不会消失
所以它本质是:用一次新提交,抵消掉旧提交的改动。
二、和「重置当前分支到这次提交」的区别
| 操作 | 效果 | 历史是否还在 | 适合场景 |
|---|---|---|---|
| 回滚提交 | 生成新提交抵消旧提交 | 历史完整保留 | 已推送到远程、多人协作 |
| 重置到这次提交 | 直接删掉后面的提交 | 历史被修改 / 丢弃 | 只在本地、没推给别人 |
三、什么时候用「回滚提交」?
- 提交已经 push 到远程仓库
- 团队其他人已经拉取了你的代码
- 你想撤销某次提交,但不想改写历史
这种情况下用「回滚提交」最安全,不会导致别人代码冲突。
四、简单总结
- 回滚提交 = 安全撤销:生成反向提交,历史保留,适合远程 / 团队协作。
- 重置 = 彻底删掉提交:直接抹掉后面记录,只适合本地未推送。