如何撤回刚提交的 commit
如果刚刚执行了 git commit
但想撤销这个提交,有几种方法可以实现,具体取决于你想达到的效果:
1. 撤销 commit 但保留更改(修改回到暂存区)
git reset --soft HEAD~1
- 这会撤销最后一次提交
- 提交的更改会保留在暂存区(就像你刚刚执行了
git add
一样) - 你可以修改文件后重新提交
2. 撤销 commit 但保留更改(修改回到工作区)
git reset HEAD~1
或
git reset --mixed HEAD~1
- 撤销最后一次提交
- 提交的更改会保留在工作区(就像你修改了文件但还没
git add
) - 这是默认的 reset 模式
3. 完全撤销 commit 和更改
git reset --hard HEAD~1
- 完全丢弃最后一次提交和所有更改
- 慎用:这会永久删除工作目录中的更改
4. 创建反向 commit 来撤销更改(适用于已推送的提交)
git revert HEAD
- 这会创建一个新的 commit 来撤销前一个 commit 的更改
- 原始提交历史保持不变
- 适合已经推送到远程仓库的情况
注意事项
- 如果已经将提交推送到远程仓库,建议使用
git revert
而不是git reset
HEAD~1
表示前一个提交,HEAD~2
表示前两个提交,以此类推- 使用
git reset --hard
前请确保你不需要保留那些更改
查看提交历史
操作前后可以使用 git log --oneline
查看提交历史的变化。