我正在寻找一种导出 Git 存储库的方法,以便我单独获得每个分支的 zip 或目录。
这类似于做“git 导出”(如“svn 导出”)?,但我希望获得每个分支的 zip,而不是当前分支的 zip 。
有 Git 或 Bash 命令可以做到这一点吗?
小智 5
git archive与分支参数一起使用git archive可以接受分支名称作为参数导出,因此您只需编写一个脚本来循环分支名称并将它们传递给 git archive。例如,这适用于 Windows Git Bash:
git for-each-ref --format='%(refname:short)' refs/heads | \
while read branch; do
git archive --format zip --output <outputDirectory>/${branch}.zip $branch
done
Run Code Online (Sandbox Code Playgroud)
我根据官方 Linux 内核文档中的第二个示例修改了它。git for-each-ref
$ git for-each-ref --format='%(refname:short)' refs/heads
foo
master
Run Code Online (Sandbox Code Playgroud)
git for-each-ref将列出 下的每个本地分支refs/heads,仅使用分支名称和refname:short格式。
该输出通过管道传输到 Bashwhile循环中,然后用分支名称替换参数git archive:
while read branch; do
git archive --format zip --output <outputDirectory>/${branch}.zip $branch
done
Run Code Online (Sandbox Code Playgroud)
这是一个 Bashfor循环解决方案,受到toydarian 的(非工作)解决方案的启发:
while read branch; do
git archive --format zip --output <outputDirectory>/${branch}.zip $branch
done
Run Code Online (Sandbox Code Playgroud)