在 SourceTree 里,“重置当前分支到此次提交”(Reset current branch to this commit)本质上是一个 Git reset 操作的图形化版本,意思是:
👉 把你当前所在的分支,强行“回到”你选中的那个提交(commit)状态。
🔧 用人话讲
假设你的提交历史是:
A → B → C → D(当前)
如果你对 B 点了“重置当前分支到此次提交”,结果会变成:
A → B(当前)
👉 C 和 D 会被“移除”出当前分支历史(是否真的删除取决于重置方式)
⚠️ 关键:有 3 种重置方式(非常重要)
在 Git 里 reset 分三种,SourceTree 也会让你选:
1、Soft(软重置)
-
只移动分支指针
-
代码不会变
-
修改会保留在“暂存区”
👉 相当于:我后悔提交了,但改动还要
2、Mixed(默认)
-
移动分支指针
-
取消暂存,但代码还在工作区
👉 相当于:提交没了,但代码改动还在
3、Hard(危险⚠️)
-
移动分支指针
-
代码 + 提交全部删除
👉 相当于:直接回到过去,后面的全没了
💡 举个实际场景
你刚提交了一个 bug:
A → B → C(有 bug)
👉 你可以:
-
用 reset 回到 B
-
重新修改再提交
🚨 一定要注意
-
❗ Hard reset 会真的删掉代码(不可恢复,除非你会用 reflog)
-
❗ 如果已经 push 到远程(如 GitHub),reset 会导致:
-
历史不一致
-
需要强制 push(危险操作)
-
🧠 一句话总结
👉 “重置当前分支到此次提交” =
把当前分支“时间倒退”到某个提交点,并决定是否保留之后的修改
如果你愿意,可以告诉我你现在的操作场景(比如:改错提交 / 想撤回 push / 想清空改动),我可以帮你选最安全的用法 👍
好,那我直接给你一个实用选择指南,你照着选基本不会踩坑 👇
🧭 SourceTree 重置怎么选(按场景)
✅ 场景 1:刚提交了,但想“重新提交”(最常见)
👉 比如:提交信息写错 / 少加文件
✔ 选择:Soft(软重置)
效果:
- 提交消失 ✅
- 代码还在 ✅
- 还在暂存区(可以直接重新 commit)
👉 💡 最安全,推荐优先用这个
✅ 场景 2:提交不想要了,但代码还想保留
👉 比如:代码还没写好,不该提交
✔ 选择:Mixed(默认)
效果:
- 提交消失 ✅
- 代码还在 ✅
- 但变成“未暂存”(需要重新 add)
👉 💡 适合“回到未提交状态”
⚠️ 场景 3:我要彻底回到某个版本(丢掉一切)
👉 比如:这几次改动全废了
✔ 选择:Hard(硬重置)
效果:
- 提交消失 ❌
- 代码也消失 ❌
👉 💀 真·回到过去(不可逆)
🚨 一个超级关键判断(先看这个!)
👉 你有没有 push 到远程(比如 GitHub)?
❌ 没 push
👉 随便 reset(安全)
⚠️ 已经 push
👉 要小心:
- reset 后再 push = 需要强制推送(force push)
- 可能影响别人代码
✔ 建议:
- 不确定 → 不要用 Hard
- 或先问团队
🧠 超简口诀(记这个就够)
👉 想改提交 → Soft
👉 想撤提交但保留代码 → Mixed
👉 想全部删掉 → Hard