Git重设-努力不丢失历史记录

时间:2019-10-28 09:43:14

标签: git

我有以下情况:

A-B-C-D (master)

我想撤消D的所有本地更改,然后从D转到B的所有地方,但是我不想只转到B。我希望将B的阶段附加到当前历史记录中,这样我最终得到:

A-B-C-D-B' (master)

就像从D还原到B一样,但保留此“还原”在历史记录中。

当我重设--hard时,我从B到D的历史都丢失了,结果是:

A-B (master)

我只想在历史记录中添加一个历史点,并开始处理此最高点,而无需创建新的分支存储等。就像获取所有内容并在B中进行提交(带有提交消息:“从B”)。

这有可能吗?

1 个答案:

答案 0 :(得分:4)

是的,git revert正是您想要的。它会创建一个新的提交,以还原给定提交的更改。

在您的情况下,以下命令都是等效的:

git revert HEAD~2..
git revert HEAD~1 HEAD
git revert <hash_of_C>..<hash_of_D>
git revert <hash_of_B>..

有关更多信息,请参见the documentation