如何从Git导出所有更改/添加的文件?

时间:2010-06-08 13:18:25

标签: git version-control msysgit tortoisegit

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

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

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

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

提前致谢!

2 个答案:

答案 0 :(得分:14)

您想如何导出它们?你说你已经有了一份清单;你还想要什么?假设您的列表中包含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>

那样的东西?

或者您甚至可以使用差异本身 - 它可以应用git apply(甚至patch,我相信。)

答案 1 :(得分:2)

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

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

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

git add *

[这适用于Windows中的git-bash]