如何将Branch A的文件/目录复制到Branch B的指定路径?
跨分支复制文件并修改存储位置的操作方法
下面提供两种可行的操作方式,根据你的习惯选择:
方法一:临时目录中转法(直观易上手)
- 切换到Branch A,把需要的文件和目录复制到项目外的临时目录:
git checkout branch-a # 创建临时目录(如果不存在) mkdir -p ~/temp-git-transfer # 复制3个头文件 cp include/*.h ~/temp-git-transfer/ # 复制目标目录及所有内容 cp -r src/dir_in_question ~/temp-git-transfer/ - 切换到Branch B,创建目标存储目录并迁移文件:
git checkout branch-b # 创建client目录 mkdir -p client # 复制头文件到client目录 cp ~/temp-git-transfer/*.h client/ # 复制目录到client目录 cp -r ~/temp-git-transfer/dir_in_question client/ - 提交Branch B的变更:
git add client/ git commit -m "迁移Branch A的头文件和dir_in_question目录至client目录" - (可选)清理临时目录:
rm -rf ~/temp-git-transfer
方法二:Git原生命令法(高效无临时文件)
直接通过Git命令从Branch A拉取指定文件/目录到Branch B的目标位置,无需中转:
git checkout branch-b # 创建client目录 mkdir -p client # 从Branch A拉取头文件并直接解压到client目录 git archive branch-a include/*.h | tar -x -C client/ # 从Branch A拉取目标目录并直接解压到client目录 git archive branch-a src/dir_in_question | tar -x -C client/ # 提交变更 git add client/ git commit -m "迁移Branch A的头文件和dir_in_question目录至client目录"
注意事项
- 如果两个
some_header.h是不同文件(可能是笔误),请替换*.h为具体文件名,避免覆盖; - 操作前确保Branch B没有未提交的变更,或者先提交/ stash 现有变更,避免冲突。
内容的提问来源于stack exchange,提问作者glades
相关产品推荐
相关产品推荐

