我想以群组友好的方式撤消一些更改而不将其从历史记录中删除。目前,我有这个(*表示主人):
[rev 1] -- [rev 2] -- [rev 3] -- [rev 4] -- [rev 5] -- [*rev 6]
我想回到第2版,但是以一种有意义的方式。我相信它应该是这样的:
[rev 1] -- [rev 2] -- [rev 3] -- [rev 4] -- [rev 5] -- [rev 6] -- [*rev 7]
| |
\---------------------------------------------------/
其中rev 7是6和2的合并(而“merge”实际上只是“盲目保持rev 2”)。没有创建新头。我该怎么做?
提前致谢。
答案 0 :(得分:4)
你会
git branch temp
git reset --hard rev2
git reset --soft temp
git add -A
git commit -m "this commit makes all the changes so that the tree at rev7 looks like the tree at rev2"
git branch -d temp
Scott Chacon有一篇关于重置命令和其他修饰符(硬,软和混合)的文章。
没有临时分支,你可以:
git reset --hard rev2
git reset --soft HEAD@{1}
git add -A
git commit -m "this commit makes all the changes so that the tree at rev7 looks like the tree at rev2"
如果你想在那里合并,你可以:
git merge --no-ff -s ours rev2
(小心,这与带有“我们的”选项的递归策略不同)