git - git reset --hard 不丢失历史
问题描述
我有以下情况:
A-B-C-D (master)
我想撤消 D 中的所有本地更改并从 D 转到 B 中的所有内容,但我不想只转到 B。我希望将 B 的阶段附加到当前历史记录中,以便我以结束:
A-B-C-D-B' (master)
所以就像从 D 恢复到 B 但将这个 Reverting 保留在历史中。
当我进行重置时--hard
,我会丢失从 B 到 D 的历史记录,最终得到:
A-B (master)
我只想将历史记录中的一个点添加到历史记录中并开始处理这个最高点,而无需创建新的分支存储等。就像获取 B 中的所有内容并提交它(带有提交消息:“从 B 恢复”)在上面。
这有可能吗?
解决方案
是的,git revert
这正是您正在寻找的。它创建一个新的提交,恢复给定提交的更改。
在您的情况下,以下命令都是等效的:
git revert HEAD~2..
git revert HEAD~1 HEAD
git revert <hash_of_C>..<hash_of_D>
git revert <hash_of_B>..
有关更多信息,请参阅文档。
推荐阅读
- javascript - Node JS找不到模块
- jquery - getJson 和 Cycle2
- c++ - c++中的左旋转操作
- google-sheets - 通过首先过滤从表中连接
- angular - Angular2-signaturepad 与 Angular 一起使用会导致找不到模块错误
- laravel - 如何使用 vue @click 和 axios 解决 500 错误
- python - Python ffmpeg 不接受路径,为什么?
- php - 如何在控制器的构造函数中获取会话数据
- php - $var->toJson 不显示完整的消息
- javascript - 在 Opera 上使用 jQuery 获取 JSON 数据会出错