如何使用Git把某一次commit修改过的文件打包

2019/06/04 09:38 上午 posted in  服务器

把新增加的文件使用git add添加进改动

使用git commit提交改动

使用git log查看提交的commit id

使用命令

git diff-tree -r --no-commit-id --name-only [commit id] | xargs tar -rf mytarfile.tar

# or

git diff [old commit id] [commit id]  --name-only | xargs tar -czvf update.tar.gz

# 单次提交打包
git diff HEAD HEAD^ --name-only | xargs tar -rf update.tar.gz

# 按日期生成
git diff HEAD HEAD^ --name-only | xargs tar -rf $(date +%Y%m%d)-01.tar.gz


# 不同的分支
git diff --name-only E history2 | xargs tar -zcvf diff.tar.gz

# 一行命令来打包所有尚未提交的修改文件和新文件
git ls-files -o -m --exclude-standard | tar -czvf modified_files.tar.gz -T -

这行命令的作用如下:

git ls-files -o -m --exclude-standard:列出所有未提交的修改文件和新文件。

-o:显示未被 Git 追踪的文件(即新文件)。
-m:显示被修改但尚未提交的文件。
--exclude-standard:排除 .gitignore 中列出的文件。
tar -czvf modified_files.tar.gz -T -:将从 git ls-files 列出的文件打包成一个名为 modified_files.tar.gz 的压缩文件。

-T -:表示从标准输入读取文件列表。
这样,你就可以在一行命令中完成所有尚未提交文件的打包。