[英]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.