繁体   English   中英

如何通过创建补丁将文件夹恢复为特定提交

[英]How to revert a folder to a particular commit by creating a patch

这是我的文件夹“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将您的存储库更新为特定的 state。

git checkout e095 -- somefolder

至于您关于生成差异的问题,那也可以。 只需将当前 state 的差异生成到 go 回e095

git diff 89cd..e095 -- somefolder

您可以使用git reset重置索引,其中还包括删除在最近提交中添加的文件( git checkout不会这样做):

git reset e095 -- somefolder

但是git reset不会更新工作副本,并且--hard选项不适用于文件夹。 那么然后使用git checkout使工作副本与索引相同:

git checkout -- somefolder

然后如果您还想删除添加的任何文件,您还需要执行以下操作:

git clean -fd somefolder

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM