如何导出Git的dev与feature分支差异并保留文件原有目录结构
可以实现,根据你的使用场景可以选择以下两种方案,都能完整保留原目录结构:
方案1:直接导出差异实体文件(适合直接部署/归档使用)
你提到feature分支仅新增文件没有修改历史文件,这个方案最适配你的需求,导出后解压即可得到完整目录结构的新增文件,无冗余内容。
在仓库根目录执行以下命令:
# 导出为tar包 git diff dev feature --name-only | xargs git archive feature --output=feature_diff.tar # 如需导出为zip包,使用以下命令 git diff dev feature --name-only | xargs git archive feature --format=zip --output=feature_diff.zip
如果你的仓库中存在包含空格、特殊字符的文件名,使用适配特殊字符的版本:
git diff dev feature -z --name-only | xargs -0 git archive feature --output=feature_diff.tar
命令说明:
- 先通过
git diff dev feature --name-only筛选出两个分支所有存在差异的文件 - 再调用
git archive从feature分支仅打包上述差异文件,不会包含其他无关的旧文件
方案2:导出Git补丁包(适合将改动同步到其他Git仓库的场景)
如果你后续需要将这些改动应用到其他Git仓库,可以生成标准Git补丁包:
git format-patch dev..feature --output-directory=./feature_patches
执行后会在当前目录下生成feature_patches文件夹,每个提交对应一个独立的.patch文件。在目标仓库执行git apply 对应补丁文件路径即可批量导入所有改动,提交记录和目录结构都会完整保留。
内容的提问来源于stack exchange,提问作者abbath0767
相关产品推荐
相关产品推荐

