关于git:从多次提交中导出已更改的文件和文件夹

 2019-09-09 

Export changed files & folders from multiple commit

我找到了一个Git命令,但它只在commit id之间导出文件名并保存在文件中

git diff --name-only commitid1 commitid2 > ../result.txt

result.txt的一个例子:

1
2
Web/A/Recoverpw.aspx
Web/B/Root.aspx

但我想将它们导出为结构文件夹中的文件。 例:

1
2
3
4
5
Web
|__A
   |__Recoverpw.aspx
|__B
   |__Root.aspx

导出的文件必须最新,从本地存储库获取。 请帮我。 谢谢。


接近的唯一命令是git archive,您可以为其指定要在(zip或tar)存档中导出的路径列表,您可以在其他地方取消存档。

但这不是获取所需文件的便捷方式。

另一种方式是:

  • 克隆你的本地仓库
  • 删除未列出git diff输出的所有文件

实际上,更简单的方法是使用路径从git diff复制每个文件。
请参阅"linux:copy并创建目标目录(如果它不存在)"

1
cp --parents a/b/c existing_dir

copies the file 'a/b/c' to 'existing_dir/a/b/c', creating any missing intermediate directories.