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

17 浏览
0 Comments

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

我对Git非常陌生,遇到了一个小问题。

在SVN中,当我想要使用我最新的更改更新生产网站时,我会在TSVN中做一个差异,并导出两个版本之间所有已更改/添加的文件。可以想象,之后很容易将这些文件传输到生产网站。

然而,在Git中,我似乎找不到“导出已更改文件”的选项。我可以进行差异比较并查看更改,也可以获取文件列表,但实际上无法导出它们。有没有合理的方法可以做到这一点?我是否错过了一些简单的东西?

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

提前感谢!

0
0 Comments

问题的出现的原因:

在Git中,有时候我们需要将所有已修改或已添加的文件导出到另一个地方,但是Git本身并没有直接提供这样的功能。所以用户在Stack Overflow论坛上提出了这个问题,希望能够找到一种方法来实现这个需求。

解决方法:

根据论坛上的回答,可以使用以下命令来导出所有已修改或已添加的文件:

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

如果需要将未跟踪的文件也包括在导出的文件中,可以在执行上述命令之前执行以下命令来添加这些文件:

git add *

需要注意的是,这些命令需要在git-bash环境中执行,而不是常规的命令行环境。因为git-bash环境可以访问额外的Unix工具。

用户在Windows的从机上执行这个命令时遇到了错误:“'xargs' is not recognized as an internal or external command, operable program or batch file.”。这个错误是因为Windows系统中没有xargs命令导致的。

通过使用上述命令,我们可以在Git中导出所有已修改或已添加的文件。需要注意的是,这些命令需要在git-bash环境中执行,并且在Windows系统中可能会遇到xargs命令不存在的问题。

0
0 Comments

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

问题的原因是用户想知道如何从Git中导出所有已更改或添加的文件。下面的内容给出了一些解决方法。

解决方法如下:

1. 使用git diff --name-only ...命令获取文件列表,然后使用git archive --output=<file> HEAD $(git diff --name-only ...)命令将这些文件导出到指定文件中。

2. 或者可以使用git diff --name-only ...命令获取文件列表,然后使用tar -czf <file> $(git diff --name-only ...)命令将这些文件打包为tar文件。

3. 或者可以使用git diff --name-only ...命令获取文件列表,然后使用cp --parents $(git diff --name-only ...) <export-directory>命令将这些文件复制到指定目录中,同时保留文件的目录结构。

用户表示第一个方法对他有效,但他更希望使用第三个方法,并保留文件的目录结构。用户还表示他只能通过FTP访问网站,无法使用git applypatch命令。

其他用户提供了一些建议,比如在git diff命令中使用--diff-filter=AM参数来过滤掉已删除的文件。还有用户询问如何在TortoiseGit中执行这些操作。

最后,用户表示他越来越喜欢Git,并称其为"AWESOME!"。

这篇文章主要介绍了从Git中导出所有已更改/添加的文件的解决方法,包括使用git diff命令获取文件列表并导出文件的不同方法。还提及了一些其他的操作建议和工具。

0