欢迎光临
我们一直在努力

Git reset、revert、amend 有什么区别?提交错了怎么补救

开发中难免会遇到提交信息写错、漏提交文件,或者已经提交的代码需要撤销。Git 提供了 reset、revert 和 commit –amend 等命令,但它们的作用并不一样,用错了还可能丢失修改。

1. git commit –amend:修改最近一次提交

如果刚刚提交完,发现提交说明写错了,或者漏掉了一个文件,可以使用 –amend。

# 修改最近一次提交说明
git commit –amend -m "feat: update login"

# 把遗漏的文件加入最近一次提交
git add forgotten-file.java
git commit –amend –no-edit

–no-edit 表示保留原来的提交说明。注意,amend 会生成一个新的提交对象并替换当前分支上的最近一次提交,因此如果旧提交已经推送并被他人使用,就要谨慎操作。

2. git reset:回退提交

reset 常用于调整当前分支指向的提交。常见的三种模式区别在于是否重置暂存区和工作区:

命令暂存区工作区
git reset –soft HEAD~1 保留 保留
git reset –mixed HEAD~1 重置 保留
git reset –hard HEAD~1 重置 重置

其中 –mixed 是默认模式。–soft 适合想撤销最近一次提交、但仍准备重新提交的情况;–hard 会丢弃目标提交之后的工作区和暂存区改动,使用前务必确认。

3. git revert:用新提交撤销旧提交

如果某个提交已经推送到共享分支,通常更适合使用:

git revert <commit-id>

它不会直接删除旧提交,而是创建一个新的提交,反向应用指定提交带来的修改。这样可以保留历史记录,避免直接重写共享分支历史。

如果反向修改与后续代码发生冲突,仍然需要手动解决冲突并完成操作。

4. 到底应该用哪个?

  • 只想修改最近一次提交说明,或补上漏掉的文件: 使用 git commit –amend。
  • 本地提交还没共享,想回退提交并重新整理改动: 使用 git reset,按需选择 –soft、–mixed 或 –hard。
  • 提交已经推送到远程共享分支,需要安全撤销: 通常使用 git revert。

特别提醒:reset –hard 有丢失未提交修改的风险;amend 和 reset 可能重写提交历史。操作前先运行 git status,必要时创建备份分支;已经共享的提交,优先考虑 git revert。

赞(0)
未经允许不得转载:171主机测评 » Git reset、revert、amend 有什么区别?提交错了怎么补救
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址