通过以下步骤将对比出来的新增文件从 Git 中复制到另一个文件夹下
假设你已经使用 git diff 找到了需要复制的文件列表,可以结合 shell 命令进行批量复制。
✅ 方法一:使用 Git + Shell 命令批量复制新增文件
# 步骤1:生成新增文件列表,并保存到临时文件 git log --diff-filter=A --name-only --pretty=format: origin/master..HEAD -- apps/user/Service/ > new_files.txt # 步骤2:创建目标目录(如果不存在) mkdir -p /path/to/target/folder # 步骤3:逐行读取文件列表并复制 while read file; do cp "$file" "/path/to/target/folder/" done < new_files.txt
📌 替换 /path/to/target/folder 为你实际的目标路径。
✅ 方法二:直接在一行命令中完成(适合快速操作)
git log --diff-filter=A --name-only --pretty=format: origin/master..HEAD -- apps/user/Service/ | xargs -I{} cp {} /path/to/target/folder/
✅ 补充说明
• --diff-filter=A 表示只筛选新增的文件(Added)。
• 如果你还想包括修改过的文件(Modified),可以去掉 --diff-filter=A 或者使用 --diff-filter=AM:
git log --diff-filter=AM --name-only --pretty=format: origin/master..HEAD -- apps/user/Service/
• 确保目标路径存在,否则会报错。可以用 mkdir -p 目标路径 创建多级目录。
✅ 示例
# 将 apps/user/Service 下所有新增文件复制到 ~/Desktop/new-meta-files/ mkdir -p ~/Desktop/new-meta-files git log --diff-filter=A --name-only --pretty=format: origin/master..HEAD -- apps/user/Service/ | xargs -I{} cp {} ~/Desktop/new-meta-files/
这样你就可以轻松地将 Git 对比出的新增文件批量复制到指定目录了。
但是方法二中xargs是Unix/Linux/macOS下的一个命令,在Windows下无法使用。在Windows下,你可以使用PowerShell或cmd来执行相同的操作。以下是PowerShell的示例:
$sourceDir = "apps/user/Service" $targetDir = "C:\Users\Administrator\Desktop\new-meta-files" $files = git log --diff-filter=A --name-only --pretty=format: origin/master..HEAD -- $sourceDir if (-not (Test-Path -Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir } foreach ($file in $files) { if (Test-Path $file) { Copy-Item -Path $file -Destination $targetDir } }
本文来自博客园,作者:飞龙在生,转载请注明原文链接:https://www.cnblogs.com/flzs/p/18936108