11

我对 Git 很陌生,我有一个小问题。

在 SVN 中[这感觉就像阿尔伯特叔叔的一个傻瓜和马的故事......“在战争期间......”]当我想用我的最新更改更新生产站点时,我会在 TSVN 中做一个差异并导出所有两个修订版之间更改/添加的文件。可以想象,之后很容易将这些文件发送到生产站点。

但是,似乎我无法在 Git 中找到“导出更改的文件”选项。我可以做一个差异并查看更改,我可以获得文件列表,但我实际上无法导出它们。有没有合理的方法来做到这一点?我错过了一些简单的东西吗?

再次澄清一下,我需要导出两个特定提交之间的所有更改。

提前致谢!

4

2 回答 2

15

你想如何导出它们?你说你已经有了一个清单;你还想要什么?假设你得到你的清单git diff --name-only ...

git archive --output=<file> HEAD $(git diff --name-only ...)

tar -czf <file> $(git diff --name-only ...)

cp $(git diff --name-only ...) <export-directory>

类似的东西?

或者你甚至可以使用 diff 本身 - 它可以应用于git apply(甚至patch,我相信)。

于 2010-06-08T13:28:59.737 回答
2

借用这里的几个答案,这是导出在工作区中修改的文件的另一种方法:

git diff --diff-filter=ACMRT --name-only HEAD | xargs tar -rf export.tar

如果您需要将它们包含在 diff 中,您可能需要事先执行以下操作来添加未跟踪的文件:

git add *

[这适用于 Windows 的 git-bash]

于 2017-04-23T18:49:35.647 回答