15

我正在尝试为我的远程托管 git repos 制作一个简单的备份脚本。在脚本中,我有几行目前看起来像这样:

git clone git@server:repo.git $DEST
tar czvf repo.tgz $DEST
rm -rf $DEST

有没有办法让这一切都发生在一条线上?我可以通过管道将 git clone 导入 tar 命令吗?我不需要克隆的目录,我只想要它的压缩存档。

我尝试了一些实验,但似乎无法弄清楚语法。

4

2 回答 2

20

不,您不能只是管道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.
于 2011-05-13T17:01:20.487 回答
5

您可以git archive将选项用于此目的--remote
你可以通过管道创建 zip 或 tar 或任何你喜欢的东西。

请参阅git-archive(1)手册页。

于 2011-05-13T17:01:49.757 回答