我在子目录中有一个存储库,现在我想要父目录 也在版本控制下,但保留存储库的当前历史记录。
所以有了下面的树:
a/b/c
c
当前拥有一个存储库,但我希望在 a
中有一个存储库,并在 c
中包含所有历史记录。
我确定有一种方法可以解决这个问题,也许使用一些 git filter-branch
?我不想使用子模块,我希望最后有一个存储库。
最佳答案
您需要创建新的外部存储库,并使用子树 merge merge 内部存储库。 There's a quick HOWTO at the bottom of this page. .您应该暂时将 c 移到 a/b 之外,这些说明预计 c 树在其最终位置尚不存在。
如果你想让 c 嵌套在它过去的历史中(并且可以接受更改后的 sha1),请改用 filter-branch(credit):
git filter-branch --index-filter \
'git ls-files -s | sed "s#\t#&a/b/c/#" |
GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
git update-index --index-info &&
mv -T "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"' -- --all
关于git - 如何扩展 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718890/