如何恰好在此时(不是头部)在 2 次提交与文件版本之间创建 git diff/diff-tree/archive

How to create a git diff/diff-tree/archive between 2 commits with versions of files at exactly this point (not head)

如果我想比较和导出过去的 2 个提交,我可以做一个 git diff 来列出所有修改过的文件,到目前为止一切顺利。 但是,如果我想以上次提交时的文件版本精确归档这些文件,我该如何实现呢? 假设一个文件在上次提交后被删除,git 存档将失败,因为无法再找到 git diff 列出的文件。我是否必须检查我想比较的最新提交,或者是否有任何优雅的解决方案?

git archive --output=test.zip HEAD $(git diff --diff-filter=ACMRTUXB --name-only SHA1 SHA2) 对于仍然存在于 diff 中但不再存在于 head 中的文件失败

您应该明确指定您希望存档从中保存文件的提交:

git archive --output=test.zip SHA2 -- $(git diff --diff-filter=ACMRTUXB --name-only SHA1 SHA2)