通过以下步骤将对比出来的新增文件从 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
    }
}
 

  

posted @ 2025-06-19 11:03  飞龙在生  阅读(37)  评论(0)    收藏  举报