我有一个git
项目,大约有5个提交,其中2-4个文件已更改。我做了一个提交,影响了两个文件,我不应该检查该分支。我只想恢复在该特定提交中所做的更改,从而将这两个文件还原到以前的位置。
这些文件在此分支上没有其他更改历史记录(同样,它们根本不应在此分支上更改)。我该怎么做?
作为奖励,将此提交“重新分配”给我当时应该检查过的分支会非常酷,但这可能过于雄心勃勃。我总是可以在检出正确的分支后再次手动更改。
最后,我使用sourceTree,但知道CLI方法也会很好。
答案 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/