我有以下情况:
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”)。
这有可能吗?
答案 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。