如何通过创建补丁将文件夹还原为特定的提交

问题描述

| 这是我的文件夹“ 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
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...