如何用Git提取分支/提交间变更文件生成FTP上传目录?
如何通过Git提取变更文件并按原结构打包以便FTP上传?
完全可以做到!针对你这种WordPress插件项目需要FTP增量上传的场景,Git有现成的方法帮你提取变更文件,不用再手动整理一堆文件了。
第一步:获取变更文件的路径列表
先不用直接生成diff文本,而是用git diff的参数只输出变更文件的路径:
# 获取两个分支之间所有变更(新增、修改、删除)的文件路径 git diff --name-only branch1..branch2 # 如果只想保留新增和修改的文件(适合FTP上传,删除文件可后续手动处理) git diff --name-only --diff-filter=AM branch1..branch2
这里的--diff-filter参数可以按需调整:A代表新增文件,M代表修改文件,D代表删除文件,你可以组合使用(比如AD就是新增和删除)。
第二步:按原目录结构复制文件到目标文件夹
拿到文件列表后,用xargs配合cp命令批量复制,关键是加上--parents参数来保留原目录结构:
git diff --name-only --diff-filter=AM branch1..branch2 | xargs -I {} cp --parents {} /path/to/your/upload-folder
执行完这个命令后,/path/to/your/upload-folder里就会保留和项目完全一致的目录结构,只包含你需要上传的变更文件,直接FTP上传这个文件夹里的内容就行。
注意:如果是Windows环境,建议用Git Bash或者WSL来执行这些命令;如果用PowerShell,可能需要调整命令逻辑,比如用
Copy-Item代替cp,并处理路径格式。
另外,我基于这个思路写了一个命令行工具,能自动读取Git diff结果并生成包含对应文件的文件夹,适合需要重复执行增量打包的场景,用起来更省心。
内容的提问来源于stack exchange,提问作者Marlon
相关产品推荐
相关产品推荐

