git恢复到已经在分支历史记录中但已撤消的特定提交

时间:2012-07-10 18:19:33

标签: git diff patch

说我有A - B - C - D - E - F - G

提交C上的

有“水平滚动功能”。后来我们改变了主意,在提交D上有“垂直滚动”。然后E,F,G是不影响视图的后端数据库迁移更改。

但是现在我们决定给水平滚动另一个机会,我们如何取回水平滚动?我不想恢复到C,因为我想保留E,F,G。我想转发合并C ...我猜合并不是正确的术语,因为C已经存在于该分支的历史中。我想我可以检查从C到我当前工作目录的特定文件,但这似乎是手动的,我将不得不记住哪些视图文件和css文件被修改。

有没有办法在C和G之间生成补丁差异,然后将其应用到当前工作目录?那会有用吗?我该怎么做?

1 个答案:

答案 0 :(得分:1)

除了已经提到过的cherry-pick(@titaniumdecoy)之外,还有交互式rebase:git rebase -i C(意味着你有机会重写历史,好像没有D)。如果您已经发布了历史记录,那么它当然会导致合并问题(如果已经有人在历史记录中有例子)。在这种情况下,如果D是C的还原(git revert C),则cherry-pick可能会起作用。否则,最好还原D:git revert D