恢复之前的git提交不是最后一个

时间:2015-04-28 03:54:35

标签: git

我有一个git项目,大约有5个提交,其中2-4个文件已更改。我做了一个提交,影响了两个文件,我不应该检查该分支。我只想恢复在该特定提交中所做的更改,从而将这两个文件还原到以前的位置。

这些文件在此分支上没有其他更改历史记录(同样,它们根本不应在此分支上更改)。我该怎么做?

作为奖励,将此提交“重新分配”给我当时应该检查过的分支会非常酷,但这可能过于雄心勃勃。我总是可以在检出正确的分支后再次手动更改。

最后,我使用sourceTree,但知道CLI方法也会很好。

2 个答案:

答案 0 :(得分:0)

不确定我理解你,但我要做的是重新排序提交并打开新的分支

首先让我们说你有这些提交:

C5
C4
C3
C2
C1

现在我想恢复提交c3 所以我会这样做

git rebase -i HEAD~3

现在我将获得一个新屏幕,它将显示最后三次提交,只需更改提交顺序,并将c3放在最后​​一个位置。

现在保存并运行它。

现在删除最后一次提交,就在这一刻,最后一次提交是c3,只需执行

git reset --hard HEAD^

这将只重置一次提交。

完成后,您应该将更改推送到存储库,您可以使用以下命令执行此操作:

git push origin mater -f

我们放置-f以强制我们对存储库进行更改。

请确保您在更改历史记录时确定更改,此操作无法恢复

答案 1 :(得分:0)

只需使用git revert即可。 E.g。

A----B----C----D
               ^
               |
               master

如果要还原提交B中的所有更改,git revert B将导致

A----B----C----D----B'
                    ^
                    |
                   master

如果提交B包含大量更改,并且您只想要部分还原提交,则应阅读http://www.link-intersystems.com/blog/2015/04/19/how-to-partially-revert-a-commit-in-git/