首页 > 解决方案 > `git rebase` vs `git reset --hard` ...它们对于删除最近的 N 次提交是否相同?

问题描述

我理解,一般来说,git rebase -i并且git reset用于非常不同的事情。

但是在删除最近的 N 次提交的情况下,在我看来它们是(或可以是)相同的。我什至做了一个实验(我的存储库有两个不同的本地副本),据我所知它们是相同的。我只是发布这个问题,以防有人可以指出我可能遗漏了什么。所以这就是我所做的。

我需要删除最近的 11 次提交(不管为什么)。

我尝试了两种方法,它们似乎完全相同;只是想知道我是否遗漏了任何东西,因为它们并不完全相同:

  1. git rebase -i HEAD~12
  1. git reset --hard HEAD~12

这两种方法似乎做了完全相同的事情。那是对的吗?

非常感谢。只是想比我现在更深入地理解 git。

标签: gitgit-rebasegit-reset

解决方案


一个不同之处在于他们对脏树的处理(文件已修改但未提交)。

git reset --hard会丢弃所说的更改,同时git rebase -i会要求您先存储它们。


推荐阅读