所以我想导出从特定提交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}
中的更改。