Git如何对比两个commit并将变更文件的最新版本移动到新目录?
Git 提取指定提交范围内变更文件最新版本操作指南
前置说明
你需要的所有变更文件的最新版本默认就是该范围内最近一次提交(即D)中的版本,无需逐次提交查找修改记录,Git会自动保留最后一次修改的结果。
操作步骤
- 如果你要操作的是最近4次提交,直接按以下命令执行即可:
- 生成包含4次提交所有变更的补丁文件(可选,仅需要补丁时执行)
后续可以通过git diff HEAD~4 HEAD > 4_commits_changes.patchgit apply 4_commits_changes.patch直接应用所有变更。 - 创建用于存放最新变更文件的新目录
mkdir -p ./latest_changed_files - 批量导出所有变更文件的最新版本到新目录,保留原有目录结构
git archive HEAD $(git diff --name-only HEAD~4 HEAD) | tar -x -C ./latest_changed_files
- 生成包含4次提交所有变更的补丁文件(可选,仅需要补丁时执行)
- 如果你要操作的是指定的A→B→C→D四个提交,不是最近4次,把上述命令中所有的
HEAD~4替换为<A提交的哈希值>~1,HEAD替换为<D提交的哈希值>即可。
注意事项
如果有文件在这4次提交中被删除,上述导出操作会自动过滤已删除的文件,仅保留最新提交中存在的文件。如果需要记录文件删除操作,直接使用生成的diff补丁文件即可。
内容的提问来源于stack exchange,提问作者user1601376
相关产品推荐
相关产品推荐

