git - `git rebase` vs `git reset --hard` ...它们对于删除最近的 N 次提交是否相同?
问题描述
我理解,一般来说,git rebase -i
并且git reset
用于非常不同的事情。
但是在删除最近的 N 次提交的情况下,在我看来它们是(或可以是)相同的。我什至做了一个实验(我的存储库有两个不同的本地副本),据我所知它们是相同的。我只是发布这个问题,以防有人可以指出我可能遗漏了什么。所以这就是我所做的。
我需要删除最近的 11 次提交(不管为什么)。
我尝试了两种方法,它们似乎完全相同;只是想知道我是否遗漏了任何东西,因为它们并不完全相同:
git rebase -i HEAD~12
- 从我不想要的 11 个提交中删除提交行,只保留它们之前的提交(交互式 rebase 文件顶部的那个)。
- 变基成功
git reset --hard HEAD~12
这两种方法似乎做了完全相同的事情。那是对的吗?
非常感谢。只是想比我现在更深入地理解 git。
解决方案
一个不同之处在于他们对脏树的处理(文件已修改但未提交)。
git reset --hard
会丢弃所说的更改,同时git rebase -i
会要求您先存储它们。
推荐阅读
- java - 如何在 Android 的 Cloud Firestore 中修补 JSON?
- java - 如何在 Windows 10 中计算 Java 代码的能耗(焦耳)
- python - 使用包的 Python 项目中的 ModuleNotFoundError
- java - 更改位置引擎请求间隔
- python - Doc2Vec - 在测试数据中查找文档相似性
- rust - 将非静态生命周期传递给 Rocket 的管理
- java - 我可以在开始活动后结束数据库事务吗?
- excel - 如果单元格值为真或仅等于数字,则运行 VBA 代码
- ansible - 类似于 yum_repository 的 aws extras 的 Ansible 模块
- strapi - Strapi 插件路由默认权限