我正在尝试为我的远程托管 git repos 制作一个简单的备份脚本。在脚本中,我有几行目前看起来像这样:
git clone git@server:repo.git $DEST
tar czvf repo.tgz $DEST
rm -rf $DEST
有没有办法让这一切都发生在一条线上?我可以通过管道将 git clone 导入 tar 命令吗?我不需要克隆的目录,我只想要它的压缩存档。
我尝试了一些实验,但似乎无法弄清楚语法。
我正在尝试为我的远程托管 git repos 制作一个简单的备份脚本。在脚本中,我有几行目前看起来像这样:
git clone git@server:repo.git $DEST
tar czvf repo.tgz $DEST
rm -rf $DEST
有没有办法让这一切都发生在一条线上?我可以通过管道将 git clone 导入 tar 命令吗?我不需要克隆的目录,我只想要它的压缩存档。
我尝试了一些实验,但似乎无法弄清楚语法。
不,您不能只是管道git clone
,因为它不会将其写入标准输出。为什么你需要一个单线?他们非常适合吹嘘你可以在一行中做一些很酷的事情,但在现实世界中并不理想。
您可以执行以下操作,但您不会.git
像在 a 中那样git clone
:
git archive --format=tar --remote=git@server:repo.git master | tar -xf -
从git archive
手册
--remote=<repo>
Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository.
您可以git archive
将选项用于此目的--remote
。
你可以通过管道创建 zip 或 tar 或任何你喜欢的东西。
请参阅git-archive(1)手册页。