仅在 Git 中导出/存档更改的文件

发布于 2024-08-09 23:14:59 字数 308 浏览 4 评论 0原文

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

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

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

有没有一种直接的方法(粗略猜测):

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

Is there a simple way to export / archive only the changed files from a given commit or series of commits in git? I can't seem to find clear instructions to do this (and I'm new to Linux/Git).

I am using msysgit, and for the most part I'm fine with deploying entire repositories but in many cases it is much more efficient to deploy small fixes a few files at a time.

Pushing/pulling/installing git on the remote servers isn't really an option as my level of access varies between projects and clients.

Is there a straight-forward way to (rough guess):

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁的新欢旧爱 2024-08-16 23:14:59

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

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

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

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

I don't think there's any need to involve git-archive. Using --name-only, you could tar up the files:

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

Since you're new to Linux, this might need some explanation:

The backticks in the command line cause the shell to first execute the command within the backticks, then substitute the output of that command into the command line of tar. So the git diff is run first, which generates a list of filenames, one on each line. The newlines are collapsed to spaces and the whole list of files is placed on the tar command line. Then tar is run to create the given archive. Note that this can generate quite long command lines, so if you have a very large number of changed files you may need a different technique.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文