如果你不小心使用 git commit -m
提交了代码,可以通过以下几种方式回退:
1. 使用 git reset
回退提交
软回退(推荐)- 保留工作区和暂存区的更改
bash
git reset --soft HEAD~1
这会将最近一次提交撤销,但保留你所有的更改在暂存区中。
混合回退 - 保留工作区更改,但清空暂存区
bash
git reset --mixed HEAD~1
# 或者简写为
git reset HEAD~1
这会撤销提交并将更改放回工作区(未暂存状态)。
硬回退 - 完全删除提交和所有更改(危险操作)
bash
git reset --hard HEAD~1
⚠️ 警告:这将永久删除提交和所有相关更改,无法恢复。
2. 使用 git revert
创建反向提交(适用于已推送的提交)
bash
git revert HEAD
这会创建一个新的提交来撤销上一次提交的更改,适合已经推送到远程仓库的情况。
3. 修改最后一次提交(如果尚未推送)
如果你只是想修改提交信息或添加遗漏的文件:
bash
# 修改提交信息
git commit --amend -m "新的提交信息"
# 或者添加遗漏的文件后修改提交
git add <遗漏的文件>
git commit --amend --no-edit
如何选择合适的方法:
- 如果提交尚未推送到远程仓库 :使用
git reset
- 如果提交已经推送到远程仓库 :使用
git revert
- 如果只是想修改提交信息或内容 :使用
git commit --amend
建议先使用 git log
查看提交历史,确认当前状态后再选择合适的回退方式。