git - 仅在 Git 中导出/归档更改的文件

标签 git export archive msysgit

有没有一种简单的方法可以仅导出/归档来自 git 中给定提交或一系列提交的更改文件?我似乎找不到执行此操作的明确说明(而且我是 Linux/Git 的新手)。

我使用的是 msysgit,在大多数情况下,我可以部署整个存储库,但在许多情况下,一次部署几个文件的小修复会更有效。

在远程服务器上推送/pull/安装 git 并不是一个真正的选择,因为我的访问级别因项目和客户而异。

是否有直接的方法(粗略猜测):

pipe 'diff --names-only' to 'git-archive'? 

最佳答案

我认为没有必要涉及 git-archive。使用 --name-only,您可以压缩文件:

tar czf new-files.tar.gz `git diff --name-only [diff options]`

由于您是 Linux 新手,这可能需要一些解释:

命令行中的反引号导致 shell 首先执行反引号内的命令,然后将该命令的输出替换到 tar 的命令行中。所以 git diff 首先运行,它生成一个文件名列表,每行一个。换行符折叠成空格,整个文件列表放在 tar 命令行上。然后运行 ​​tar 来创建给定的存档。请注意,这会生成很长的命令行,因此如果您有大量更改的文件,您可能需要一种不同的技术。

关于git - 仅在 Git 中导出/归档更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678032/

相关文章:

java 创建我的应用程序可以识别的自定义文件扩展名

python - pip 安装 github 存储库失败 : No files/directories

ruby-on-rails - Solidus vs Spree - 应该使用哪个?

git - 我如何在 git 中请求一个分支的完整差异?

ffmpeg - 如何导出 Adob​​e Connect 视频?

passwords - 解压脚本密码

javascript - 在 A 依赖于 B、B 依赖于 C 的情况下,并行处理 A、B 和 C 的完美工作流程是什么?

javascript - module.exports 函数不是一个函数

java - 如何导出具有非 jar 依赖项的工作 jar

Linux 删除超过 1 年的文件夹和超过 3 个文件