问题描述
|
这是我的文件夹“ somefolder \”的历史记录
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
我想将某个文件夹恢复为“固定在某个文件夹中的错误”提交。
由于第二个提交涉及某个文件夹之外的更改,因此我不想还原此提交。
我猜最安全的方法是在提交e095和89cd之间创建仅适用于某些文件夹的差异/补丁,然后应用该补丁。我怎样才能做到这一点?
解决方法
您可以使用git checkout将存储库更新为特定状态。
git checkout e095 -- somefolder
至于您关于生成差异的问题,那也可以。只需生成差异即可从当前状态返回back2ѭ:
git diff 89cd..e095 -- somefolder
,您可以使用git reset
重置索引,其中还包括删除在较新的提交中添加的文件(ѭ5本身不执行此操作):
git reset e095 -- somefolder
但是,git reset
不会更新工作副本,--hard
选项不适用于文件夹。因此,使用git checkout
使工作副本与索引相同:
git checkout -- somefolder
然后,如果您还想删除添加的任何文件,则还需要执行以下操作:
git clean -fd somefolder