在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”

  • echo FA回答关于是否复制文件或目录(文件)的不可避免的xcopy问题,以及覆盖文件的可能问题(覆盖全部)
  • usebackq允许我们使用git命令的输出作为do子句的输入
  • HEAD〜1 HEAD获得前一个提交和当前HEAD之间的所有差异
  • %〜fA将git输出转换为完全限定的路径(需要将正斜杠更改为反斜杠)
  • C: git_changed_files 是你可以找到所有不同的文件的地方
  • 链接地址: http://www.djcxy.com/p/4465.html

    上一篇: Export only modified and added files with folder structure in Git

    下一篇: Reset branch completely to repository state?