所以我想导出从特定提交ID到今天(可能包括后续提交)的所有文件,所以我要这样做:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commitId | xargs tar -rf output.tar
但是,似乎此输出文件仅在指定的提交ID($commitId)中进行了修改。

我正在寻找的是,它应该导出从指定的提交ID到今天的所有文件(包括这段时间内可能发生的任何进一步的提交)。

最佳答案

引用Git documentation:



...



在您的情况下,您只给出了一个<tree-ish>,因此它与$commitId的父级进行比较。相反,您应该提供两个<tree-ish> es进行比较。

假设提交在master分支上,并且master分支是最新的;然后以下命令应提供您想要的内容:

git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT ${commitId}~1 master | xargs tar -rf output.tar
~1之后的${commitId}相对于${commitId}的父级进行了比较,否则将不计算${commitId}中的更改。

10-07 18:11