目前任职公司,每周一日常更新需要打包「上个版本」到「最新代码」的压缩包,图方便写成命令,以便后续使用。
0x00 思路
git diff
查找「上个版本的提交」->「最新提交」的文件区别。- 利用各类压缩工具打包压缩文件。
0x01 代码
git diff --diff-filter=d --name-only <COMMIT_ID> HEAD | xargs tar cvf <FILE_NAME> --exclude=<EXCLUDE>
--diff-filter=d
:忽略删除的文件--name-only
:只导出文件名<COMMIT_ID>
:从哪次提交开始导出HEAD
:到最新的提交<FILE_NAME>
:打包的文件路径<EXCLUDE>
:排除文件或目录
另外,如不需要打包,只需拷贝,可将 tar
替换为 cp
命令:
xargs -I{} cp --parents {} <DIR_NAME>
<DIR_NAME>
:复制到的目录名
可选使用 7z 打包(Windows 下需要先配置 7z 的环境变量)
git diff --diff-filter=d --name-only <COMMIT_ID> HEAD | xargs 7z a <FILE_NAME>
0x02 改进
若每次版本都按规定打 Tag 的话,可以使用如下命令自动获取最近的 Tag 信息,用于确认最新版本。
git describe --tags `git rev-list --tags --max-count=1`