checkout
checkout
是将HEAD指针移动到指定提交的操作。git checkout
命令可以对提交或文件使用。对文件使用,将把文件内容更改为特定提交中的对应文件内容。
revert
revert
是接受指定提交,并创建与指定提交相反的新提交的操作。git revert
只能对提交使用,不能对文件操作。
reset
reset
是接受指定提交,并重置环境(工作目录、暂存区、本地仓库),以匹配指定提交当时Git库状态的操作。reset
可以在三种不同的模式中调用,这三种模式对应于工作目录、暂存区、本地仓库。
checkout
和reset
通常用于本地库或私有库的“撤消”操作。它们修改仓库的历史记录,当推送到远程仓库时会导致冲突。revert
被认为是“公共撤消”的一种安全操作,因为它通过创建相反的新提交来撤销更改,不会覆盖旧的记录。
Git Reset vs Revert vs Checkout
下表总结了所有这些命令的最常见用例:
命令 | 范围 | 场景 |
---|---|---|
git reset |
提交 | 丢弃私有分支中的提交或未提交的更改 |
git reset |
文件 | Unstage文件 |
git checkout |
提交 | 在分支之间切换或检查旧快照 |
git checkout |
文件 | 丢弃工作目录中的更改 |
git revert |
提交 | 撤消公共分支中的提交 |
git revert |
文件 | (N/A) |