问题描述
我只想scp
git 存储库中跟踪的文件。
例如,我从 git ls-files
命令获得以下输出:
$ git ls-files
someFile
src/file1.txt
src/file2.txt
anotherFile
scp
接受这样的输入:scp someFile src/file1.txt src/file2.txt anotherFile <destination>
,我可以使用 scp $(git ls-files) <destination>
生成它。问题在于只是将所有文件转储到 <destination>
中,而不维护文件夹结构。我想为此使用 scp -r
,但我不知道如何过滤文件,以便仅复制使用 git ls-files
命令显示的文件。也许有一些方法可以使用 xargs
来...
解决方法
使用rsync
。
git ls-files | rsync -a --files-from=- . <destination>
如果没有,您可以使用 tar
创建一个 --files-from
,并在另一侧使用 ssh
和 tar
。
如果没有,请创建一个临时目录,将所有文件复制到本地,同时保留目录结构,并使用 scp -r
复制该临时目录。