You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git如何复制目录并保留各文件的提交历史?

保留Git文件修订历史创建新版本目录的方法

要基于已有的version2创建version3,同时保留所有文件的完整修订历史,直接复制目录再add/commit的方式行不通——Git会把version3的文件识别成全新文件,丢失和version2的历史关联。可以用下面两种方法实现:

方法一:直接复制并关联历史(适合简单目录)

  1. 先创建version3目录:
mkdir -p widget/version3
  1. 逐个复制version2的文件到version3,让Git自动关联历史:
for file in widget/version2/*; do
  git checkout HEAD -- "$file" -- "${file/version2/version3}"
done

这个命令通过Git的检出机制复制文件,能让Git识别出version3的文件是从version2衍生而来,不会丢失历史。

  1. 提交变更:
git add widget/version3/
git commit -m "基于version2创建version3,保留文件修订历史"

方法二:分支过渡法(适合复杂目录结构)

如果version2下有多层子目录,用分支过渡更稳妥:

  1. 创建并切换到临时分支:
git checkout -b temp-version3
  1. 把version2的所有内容移动到version3:
git mv widget/version2/* widget/version3/

Git的移动操作会完整保留文件历史。

  1. 提交移动操作:
git commit -m "临时分支:迁移version2内容到version3"
  1. 切回你的主分支(比如main或master):
git checkout main
  1. 合并临时分支的变更:
git merge temp-version3 --no-ff
  1. (可选)删除临时分支:
git branch -d temp-version3

验证操作是否成功

提交完成后,执行git log --follow widget/version3/[具体文件名],如果能看到该文件在version2中的所有历史提交记录,就说明历史保留成功了。

内容的提问来源于stack exchange,提问作者oceanclub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:09:58