在Git中只导出修改并添加的文件夹结构的文件
我想在特定的提交中获取已修改和添加的文件的列表,以便我可以导出它们并生成具有文件结构的包。
这个想法是获取包并将其提取到服务器上。 出于很多原因,我无法创建钩子来自动提取回购,并且我必须保持服务器更新的最简单方法是生成此包。
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commit_id
git diff-tree -r $commit_id
:
将给定提交的差异传递给它的父代(包括所有子目录,而不仅仅是顶级目录)。
--no-commit-id --name-only
:
不要输出提交SHA1。 只输出受影响的文件的名称而不是完整的diff。
--diff-filter=ACMRT
:
只显示在此提交中添加,复制,修改,重命名或其类型已更改的文件(例如文件→符号链接)。 这留下了删除的文件。
git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $commit_id | xargs tar -rf mytarfile.tar
只是想了解一下,这里是通过tar传输的命令。 这将文件导出到一个tar档案。
这是一个适用于Windows 7的单行命令。从存储库的顶级文件夹运行它。
(`git diff-tree -r --no-commit-id --name-only --diff-filter = ACMRT HEAD〜1 HEAD`)for / f“usebackq tokens = *”%A in echo FA | xcopy “%〜fA”“C: git_changed_files %A”
上一篇: Export only modified and added files with folder structure in Git