没有 Git 元数据的压缩包

Posted

技术标签:

【中文标题】没有 Git 元数据的压缩包【英文标题】:Tarballing without Git metadata 【发布时间】:2011-03-05 09:56:10 【问题描述】:

我的源代码树包含几个使用 Git 源代码控制的目录,我需要对整个树进行 tar 压缩,不包括对 Git 元数据或自定义日志文件的任何引用。

我以为我可以使用 find/egrep/xargs/tar 的组合,但不知何故,tar 文件包含 .git 目录和 *.log 文件。

这就是我所拥有的:

find -type f . | egrep -v '\.git|\.log' | xargs tar rvf ~/app.tar

有人可以在这里解释我的误解吗?为什么 tar 处理 find 和 egrep 正在过滤的文件?

我也对其他技术持开放态度。

【问题讨论】:

【参考方案1】:

git-archive 可能就是您要找的。​​p>

【讨论】:

可能不会。因为它在源代码树中有多个 git。【参考方案2】:

你可以在没有 grep 的情况下做到这一点。 find 很强大

 find . -type f -not \( -iname ".git" -or -iname ".log" \) | xargs ...

【讨论】:

问题是我的查找参数。看我的回答。感谢您的选择。【参考方案3】:

试试这样的:

git archive --format=tar -o ~/tarball.tar -v HEAD

将您的 .log 文件和您不想打包到 .gitignore 文件中的所有其他内容添加到您的 .gitignore 文件中。

【讨论】:

很好,有没有办法在不提交代码的情况下获取代码快照?即使文件没有暂存或提交,我也想归档当前目录?【参考方案4】:

[打耳光]呸!要查找的参数顺序错误!我没有看到警告,因为它们从屏幕上消失了。这允许'。通过 egrep 导致 tar 吞下所有东西。

这将教会我在详细调试中淹没重要消息。

这行得通:

find . -type f | egrep -v '\.git|\.log' | xargs tar cvf ~/app.tar

【讨论】:

【参考方案5】:

当文件数量增加到多个xargs 命令时,您会感到非常惊讶:然后您将首先制作第一个文件的 tar 文件,然后用其余文件覆盖相同的 tar 文件。

GNU tar--exclude 选项可以解决这个问题:

tar cvf ~/app.tar --exclude .git --exclude "*.log" .

【讨论】:

【参考方案6】:

排除版本控制系统目录:

tar --exclude-vcs

这将排除 svn、git 元文件等。

【讨论】:

【参考方案7】:

对于从应用程序目录之外执行此操作:

tar cvfz app.tar.gz --exclude ".git/*" --exclude ".git" app/

【讨论】:

【参考方案8】:

你可以直接用tar选项--exclude-vcs试试:

--exclude-vcs:
          Exclude version control system directories

例如:

tar cvfj nameoffile.tar.bz2 directory/ --exclude-vcs

它适用于 Git。

【讨论】:

谢谢,但我的 tar 版本“不支持选项 --exclude-vcs”。 @zaf yes = 仅限 GNU tar。 MacOSX 附带的 bsdtar 没有它。 @Marko Aha,感谢您启发我。这些细节总是困扰着我。【参考方案9】:

较新的 GNU tar 可以使用标志 --exclude-vcs 自动排除版本控制目录。这也会处理 .git。

【讨论】:

【参考方案10】:

对我来说,.gitignore 内容正是我所需要的:

tar cvfz $PROJECT.tar.gz --exclude-from=$PROJECT/.gitignore $PROJECT

--exclude-from 正在读取文件的内容 - 并排除那里列出的模式

【讨论】:

还有 --exclude-vcs-ignores 从 VCS 忽略文件中读取排除模式。

以上是关于没有 Git 元数据的压缩包的主要内容,如果未能解决你的问题,请参考以下文章

MISC:压缩包取证(zip爆破明文攻击伪加密CRC32碰撞)

MISC:压缩包取证(zip爆破明文攻击伪加密CRC32碰撞)

MISC:压缩包取证(zip爆破明文攻击伪加密CRC32碰撞)

jdk8r131下载完是一个压缩包 解压出来只有一个文件夹 没有安装文件

win10浏览器中不能导出数据压缩包怎么办

zip压缩包解压乱码问题