Git 如何还原提交的一部分?

Git 如何还原提交的一部分?,git,revert,git-revert,Git,Revert,Git Revert,在我们回购的历史中有一个承诺、推动等。我有SHA,我想运行与之相当的git revert/one/folder/*THESHAID,但是git revert看起来不能只更改特定的文件夹 有没有办法复制这种功能?这已经够奇怪了,它没有按钮也就不足为奇了,特别是在蛮力方法如此简单的情况下: git revert that_commit # do the whole revert git reset --hard HEAD^ # in what turns ou

在我们回购的历史中有一个承诺、推动等。我有SHA,我想运行与之相当的
git revert/one/folder/*THESHAID
,但是git revert看起来不能只更改特定的文件夹


有没有办法复制这种功能?

这已经够奇怪了,它没有按钮也就不足为奇了,特别是在蛮力方法如此简单的情况下:

git revert that_commit           # do the whole revert
git reset --hard HEAD^           # in what turns out to have been a throwaway commit
git checkout HEAD@{1} -- one/folder   # and just take what you want of the results

您可以手动编辑修补程序,使其仅包含所需目录中的更改,然后还原修补程序(patch-R-p1)&提交。我刚才也投票将其作为dup关闭,@vcsjones的链接答案在概念上更清晰,但在执行过程中更笨拙,请选择。我签出了另一个答案。。这些命令的逻辑对我来说更有意义。。。