所以我想导出从特定提交 ID 开始到今天的所有文件(可能包括后续提交),所以我这样做:
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commitId | xargs tar -rf 输出.tar
但是,似乎此输出文件仅在指定的提交 ID ($commitId
) 中被修改。
虽然我正在寻找的是它应该导出从指定提交 ID 开始到今天的所有文件(包括在此期间可能发生的任何进一步提交)。
最佳答案
git diff -z --name-only --diff-filter ACMRT ${commitId}~ HEAD | xargs -0 tar -rf output.tar
-
git diff
足够了;您不需要使用git diff-tree
来查找提交范围内已更改文件名的列表。 git diff
中的-z
选项和xargs
中的-0
确保使用NUL
输出字段终止符,否则任何带空格的路径/文件名都会导致您的命令中断。${commitId}~ HEAD
列出${commitId}
的父提交之间的更改(因此包括该提交中的更改)和最近的提交(HEAD
)。
关于从指定的提交到今天,Git 将文件导出为 zip/tar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482984/