Android Studio 中Revert Commit、Undo Commit 和 Drop Commit 使用场景
Android Studio 存在三种不同的撤销提交操作,用途和影响有显著区别:
1. Revert Commit(还原提交)
-
作用:
创建一个新的提交,用于撤销指定提交引入的更改(相当于逆向操作该提交的修改)。 -
结果:
-
历史记录中会新增一个 “Revert” 提交,原提交仍然保留在历史中。
-
文件状态会更新为撤销后的内容(类似
Ctrl+Z
该提交的修改)。
-
-
适用场景:
-
撤销已推送到远程仓库的提交(避免重写历史)。
-
公开协作时安全撤销错误提交(不破坏他人仓库历史)。
-
-
Git 命令等价操作:
git revert <commit-hash>
2. Undo Commit(撤销提交)
-
作用:
将指定提交移出提交历史,将其更改放回暂存区/工作目录(相当于git reset --soft
)。 -
结果:
-
提交被取消,但修改内容保留在工作目录(可重新编辑或提交)。
-
原提交从本地分支历史中移除(尚未推送时安全)。
-
-
适用场景:
-
本地提交后发现遗漏文件或需修改提交信息时。
-
未推送的提交(操作仅影响本地)。
-
-
Git 命令等价操作:
git reset --soft HEAD~1 # 撤销最后一次提交
3. Drop Commit(丢弃提交)
-
作用:
彻底删除提交及其更改,从历史中擦除该提交(相当于git reset --hard
)。 -
结果:
-
提交和其引入的修改完全消失(不可恢复)。
-
分支历史被重写(后续提交的父提交会改变)。
-
-
适用场景:
-
丢弃未推送的临时/实验性提交(如调试代码)。
-
本地分支历史清理(需谨慎使用)。
-
-
风险:
- 若提交已推送,强制推送(
git push -f
)会破坏协作。
- 若提交已推送,强制推送(
-
Git 命令等价操作:
git reset --hard <commit-hash>^ # 回退到提交的前一个状态
使用建议
-
已推送的提交 → 用
Revert
(避免历史冲突)。 -
未推送的提交需修改 → 用
Undo
(内容保留方便调整)。 -
未推送的提交需彻底删除 → 用
Drop
(谨慎操作,确保无需恢复)。 -
重要提示:
Undo
/Drop
会重写本地历史,若已推送需强制推送(git push -f
),可能影响团队协作!