Tar 一个没有 .git 文件的文件夹?

Tar 一个没有 .git 文件的文件夹?

如果我 tar 一个 git 存储库的文件夹,是否可以在不包含.git相关文件的情况下执行此操作?如果没有,我将如何通过命令来做到这一点?

答案1

最简单的答案:添加--exclude-vcs.这不包括所有版本控制系统目录

我个人使用

tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME

所以您需要做的就是--exclude-vcs在命令末尾添加 。

答案2

看看git help archivegit 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/

相关内容