将所有 Git 分支导出到每个分支的单独 zip 文件中

Kye*_*ica 4 git export

我正在寻找一种导出 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)

For循环解决方案

这是一个 Bashfor循环解决方案,受到toydarian 的(非工作)解决方案的启发:

while read branch; do
  git archive --format zip --output <outputDirectory>/${branch}.zip $branch
done
Run Code Online (Sandbox Code Playgroud)

文档