git 本地仓库 删除最近一次commit
1. 彻底删除最近一次 commit(包括更改)
# 删除最近一次 commit,工作区会回到该 commit 之前的状态
# 注意:这会永久删除该 commit 的更改
git reset --hard HEAD~1# 或者用 commit hash
git reset --hard HEAD^
2. 删除 commit 但保留更改(最常用)
# 删除 commit,但保留文件的更改在工作区
git reset --soft HEAD~1# 或者
git reset --soft HEAD^
3. 删除 commit 但保留更改在暂存区
# 删除 commit,更改会保留在暂存区(staged)
git reset --mixed HEAD~1# --mixed 是默认选项,所以也可以简写
git reset HEAD~1
4. 使用 revert(推荐用于已推送的 commit)
# 创建一个新的 commit 来撤销之前的更改
# 这不会删除历史记录,更安全
git revert HEAD
5. 如果已经推送到远程仓库
# 先本地删除 commit(选择上述方法之一)
git reset --hard HEAD~1# 强制推送到远程(慎用!会改写远程历史)
git push origin branch-name --force# 或者更安全的 push(新版本 git)
git push origin branch-name --force-with-lease
注意事项:
- 如果 没有推送到远程,可以使用
reset - 如果 已经推送到远程,建议使用
revert而不是reset - 使用
--force推送会 影响其他协作者,需要谨慎操作 - 使用
git reflog可以找回被误删的 commit
常用快捷方式:
HEAD~1= 上一个 commitHEAD^= 上一个 commit(相同)HEAD~2= 上两个 commit
推荐大部分情况下使用 git reset --soft HEAD~1,因为它保留更改且比较安全。