如何为指定目录生成Git补丁文件
解决方法
方法1:针对单个目标提交生成过滤补丁
如果你明确只需要处理提交00001,且只保留其中foo和hoo目录的修改,直接执行:
git format-patch -1 00001 -- foo hoo
-1表示仅生成指定提交的单个补丁文件--后面的foo hoo是路径过滤规则,只会把这两个目录的修改内容纳入补丁,自动排除goo目录的变更- 执行后只会生成
0001-test-commit.patch(仅包含foo/test.c和hoo/test.c的修改),不会生成0002-test-commit2.patch(该提交未涉及foo/hoo的修改)
方法2:自动筛选所有涉及目标目录的提交并生成补丁
如果有多个提交,想自动找出所有修改过foo或hoo的提交再生成对应补丁,用组合命令:
git format-patch $(git rev-list HEAD -- foo hoo)
git rev-list HEAD -- foo hoo:遍历所有提交,仅输出修改过foo或hoo目录的提交哈希git format-patch基于这些哈希生成补丁,同样自动过滤掉补丁里非foo/hoo的内容
内容的提问来源于stack exchange,提问作者teahyung kim
相关产品推荐
相关产品推荐

