如何提取两次Git提交间的新增完整代码文件至指定文件夹?
提取两次Git提交间新增文件的命令实现
步骤1:获取两次提交的哈希值
先确定你要对比的两个提交的哈希值(可以在Fork里直接复制,或者用git log命令查看),记为旧提交哈希(两年前的那次)和新提交哈希(最近的那次)。
步骤2:筛选出新增文件列表
用以下命令列出两次提交之间新增的所有文件:
git diff --name-only --diff-filter=A <旧提交哈希> <新提交哈希>
--diff-filter=A:只筛选**新增(Added)**的文件,排除修改、删除的文件--name-only:仅输出文件路径,不显示文件内容差异
步骤3:将新增文件提取到指定文件夹
先确保目标文件夹存在(比如~/target-files):
mkdir -p ~/target-files
然后用以下命令把所有新增文件导出到目标文件夹(兼容带空格的文件名):
git diff --name-only --diff-filter=A <旧提交哈希> <新提交哈希> | while read -r file; do git checkout <新提交哈希> -- "$file" --prefix=~/target-files/ done
while read -r file:处理带空格的文件名,避免解析出错--prefix=~/target-files/:指定文件导出的目标路径,Git会自动创建对应的目录结构
如果你的系统支持xargs且文件名无空格,也可以用更简洁的命令:
git diff --name-only --diff-filter=A <旧提交哈希> <新提交哈希> | xargs -I {} git checkout <新提交哈希> -- {} --prefix=~/target-files/
内容的提问来源于stack exchange,提问作者Yuriy Votintsev
相关产品推荐
相关产品推荐

