0

我有一个包含多个组件的 git 存储库,每个组件都在自己的目录中。我现在想把每个组件放在它自己的 git repo 中。这里的一个要求是 git 历史记录不会丢失,因此 git blame 仍然有效。我正在寻找一种方法来做到这一点,并且没有不相关的 git 历史。这有两个原因:我不希望 repo 历史记录被不属于组件的代码更改弄乱,并且我希望历史记录中的提交计数和其他内容相当准确。

我已经看过这篇有用的帖子,它朝着正确的方向发展。然而,它并没有完全删除无意义的提交(所以现在历史上有很多空提交)。它也不会保留过去从其他组件移动的文件的历史记录(离子情况下,该组件被排除),或者即使它们在提交中被触及,也触及被忽略组件中的文件。

有没有更好的方法来做到这一点?

4

1 回答 1

1

git filter-branch具有将存储库减少到子目录的专用模式。检查选项--subdirectory-filter。它应该自动删除不相关的提交,并将子目录的内容移动到 repo 的顶层。

但是,它不会跟踪/跟踪文件重命名。如果你愿意的话,你会看到很多手工工作。毕竟,您必须在文件的旧位置包含对文件的更改,而且还要重写重命名后位置的路径。我们没有任何随 git 一起提供的东西来做到这一点。

于 2013-06-13T09:17:40.167 回答