git 导出变动文件,包括目录结构
git 下执行以下命令:
git diff --name-only | xargs zip diff-changes.zip
也可以使用 tar -cvf
如果比较两个提交点,可以这样:
git diff --name-only 51828d5e34534dfgsfgsdfgsdfgea72bbb0bd3d7 ceeacb036db34534dfgsdgsfdgsdfcc0290a76aa | xargs zip diff_343443.zip
如果直接导入到某个文件夹,可以这样:
git diff --name-only | xargs zip /tmp/tmp.zip
unzip -o /tmp/tmp.zip -d /path/target
rm -f /tmp/tmp.zip
unzip -o
当目标文件已存在则覆盖,-n 则不覆盖
也可以导入前先清空目标文件,比如:
git diff --name-only | xargs zip /tmp/tmp.zip
rm -rf /path/target/*
unzip -o /tmp/tmp.zip -d /path/target
rm -f /tmp/tmp.zip
注意:以上命令只适用于修改的文件,如果是新增的和重命名的就不行了,修改,新增和重名可以用下面的命令(推荐):
git status --porcelain | awk '{if ($1 == "M" || $1 == "A" || $1 == "??") print $2}' | xargs zip diff-changes.zip
如果仅导出删除的文件,可以使用以下命令:
git status --porcelain | awk '{if ($1 == "D") print $2}' | xargs zip diff-changes.zip