我尝试使用rsync --filter=':+ .gitignore'
(-/exclude works but not include)无济于事。
基本上我只想在脚本中包含.ignore文件,并使用rsync将其中的所有内容上传到遥控器。
如果有人将sed或awk .gitignore的技能发送到适合包含--filter='merge file'
等的文件中,我将非常感激!
或者另外一种方法是让rsync理解.gitignore是否包含在内。
https://www.kernel.org/pub/software/scm/git/docs/gitignore.html'模式格式'
http://linux.die.net/man/3/fnmatch
https://git.samba.org/?p=rsync.git;a=blob_plain;f=wildtest.txt;hb=HEAD
https://git.samba.org/?p=rsync.git;a=blob_plain;f=wildtest.c;hb=HEAD
rsync bla/
中的一些问题仅表示dir,bla/*
仅表示该目录中的文件,bla/**
表示该目录下的所有内容(包括子目录)和{{1}终于意味着bla及其所有内容,但所有git可能都是bla/***
但exclude rules似乎兼容。
答案 0 :(得分:2)
也许是这样的:(再次,未经测试)
git ls-files -oz | rsync --include-from=- --from0
答案 1 :(得分:1)
我建议使用gsync而不是rsync
。我写的是因为:
我有一个具有以下特征的项目:
.gitignore
长度超过60行.gitignore
.gitignore
个文件包含!
行样式我在其他答案中尝试了这些方法。有些人很有希望,但最终我遇到了discarding over-long filter
错误。所以我写了gsync作为rsync
的包装脚本来正确处理.gitignore
文件(在子目录中,支持!
- 样式异常。我想你会发现它有帮助的。
答案 2 :(得分:-1)
考虑一下:(未经测试)
rsync --include=.gitignore
这就是手册页所说的,虽然git的忽略文件有点高级,你可以选择注释行和“未忽略忽略的文件”,上面的命令不尊重这些文件。
你的.gitignore文件有多复杂,而且至关重要......是否忽略了.gitignore文件?