如果我 tar 一个 git 存储库的文件夹,是否可以在不包含.git
相关文件的情况下执行此操作?如果没有,我将如何通过命令来做到这一点?
答案1
最简单的答案:添加--exclude-vcs
.这不包括所有版本控制系统目录
我个人使用
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
所以您需要做的就是--exclude-vcs
在命令末尾添加 。
答案2
看看git help archive
或git archive --help
。该git
子命令archive
允许您制作仅包含 trackeod by 的文件的存档git
。这可能就是您正在寻找的。
手册末尾列出的许多示例之一:
git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz
当前版本git
支持创建以下格式的档案:
tar
tar.gz
或者tgz
zip
请参阅git archive --list
参考资料 获取您的系统支持的格式列表。
答案3
如果您希望存档包含 git 跟踪的文件,但不包含 git 存储库本身或任何生成的或未跟踪的文件,那么使用git archive
。
如果您特别想排除.git
但包含其他所有内容,在 Linux 或 FreeBSD 或 OSX 或 Cygwin 下,tar 有一个简单的选项来排除目录:
tar -c --exclude .git -f - foo | gzip >foo.tgz
使用 GNU tar(即在 Linux 或 Cygwin 下),您可以将其缩短为tar czf foo.tgz --exclude .git foo
.
创建档案的 POSIX 方式是pax
。
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
答案4
对我来说唯一有效的是排除 .git 目录(以及另一个称为备份的目录)以将必要的文件传输到另一台服务器,就是这个。吉尔斯的回答帮助我找到了这个解决方案。
tar --exclude .git --exclude backups -czvf project1.tar.gz /var/www/html/project1/