git:移动到不同的存储库时保留文件的更改日志

exi*_*xic 6 linux migration git

我正在使用 git 对我的配置文件进行版本控制。现在我需要将我的一些配置文件移动到不同的存储库,以实现一个干净的结构。如果我将文件移动到不同的存储库,有没有办法保留文件的更改日志?

如果我将其移动到 B/a,我希望在 repo B 中对 repo A 的所有提交都触及文件 A/a。理想情况下,如果我之后将 A/x 移动到 B/x,我希望看到 B/a 和 B/x 一起出现在涉及存储库 A 中两个文件的提交中。我不希望有任何 A/ 开发步骤a 合并到 B 的任何提交中,我只希望它们之后出现在那里。

谢谢您最好的问候

Ste*_*ngs 5

假设您要将历史filename.conf从一个源存储库传输到另一个接收存储库。我认为您要遵循的策略是:

  1. 在源存储库中,创建一个提交分支,这些分支被重写为仅包含filename.conf.
  2. 将独立的提交行合并到接收存储库中的普通分支中。

在执行此操作之前,一定要备份您的存储库!

在源存储库中,使用filter-branch重建历史记录,删除除filename.conf.

git checkout -b filtered-commits
git filter-branch -f --prune-empty --tree-filter 'find . -not -name filename.conf -exec rm {} \;' filtered-commits
Run Code Online (Sandbox Code Playgroud)

然后,在接收存储库中:

git pull path/to/source/repo
Run Code Online (Sandbox Code Playgroud)

如果您还需要移动filename.conf存储库中的路径,您可能需要使用 上的--subdirectory-filter选项git filter-branch