如何在忽略 .git、.gitignore 等文件的同时执行 gsutil cp -R?

Posted

技术标签:

【中文标题】如何在忽略 .git、.gitignore 等文件的同时执行 gsutil cp -R?【英文标题】:How to do gsutil cp -R while ignoring files like .git, .gitignore? 【发布时间】:2014-05-07 08:19:39 【问题描述】:

我正在尝试自动化将我的网络资产与 Google Cloud Storage 同步的过程。我基本上需要将开发目录中的所有内容复制到云端。但是,我需要忽略.git 目录和其他一些不相关的文件。

我不能只做一个gsutil cp -R . <dest>,因为这绝对需要一切,包括.git。 我尝试了find . | fgrep git | gsutil cp -I <dest>,但这会将所有目录展平并将它们放在根目录中!

有没有办法我可以用gsutil 解决这个问题,或者我必须在脚本中循环使用-R 上传所有目录(.git 除外),然后上传当前目录中的单个文件?

【问题讨论】:

rsync will not exclude hidden files in gsutil 4.15的可能重复 【参考方案1】:

您可以使用如下命令:

gsutil rsync -x '\.git.*' dev_dir gs://your-bucket

查看 Google 存储 - rsync - Synchronize content of two buckets/directories

【讨论】:

这是一个合适的答案。不知道为什么它被否决了。【参考方案2】:

你有两个选择:

A) 上传后删除 git 文件:

gsutil rm gs://bucket/\*.git\*

B) 使用 find 排除 git 文件:

find . -not -path '*/.git' -type f -printf '%P\n' | xargs -I '' gsutil cp '' gs://bucket/''

来源:https://groups.google.com/forum/#!topic/gsutil-discuss/zoHhkTPhiNc

如果 gsutil 实现 rsync 会容易得多,使用 --exclude 标志会更容易。

【讨论】:

以上是关于如何在忽略 .git、.gitignore 等文件的同时执行 gsutil cp -R?的主要内容,如果未能解决你的问题,请参考以下文章

Git 忽略提交 .gitignore

Git 忽略提交 .gitignore

Git 忽略提交 .gitignore

IDEA创建.gitignore文件模板忽略git提交.idea等文件

如何创建.gitignore文件,忽略git不必要提交的文件

如何创建.gitignore文件,忽略不必要提交的文件