如何在忽略 .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?的主要内容,如果未能解决你的问题,请参考以下文章
IDEA创建.gitignore文件模板忽略git提交.idea等文件