git - 如何扩展 git 存储库

标签 git

我在子目录中有一个存储库,现在我想要父目录 也在版本控制下,但保留存储库的当前历史记录。

所以有了下面的树:

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/

相关文章:

git - 如何使用不同的 pathdef 同时运行两个 MATLAB 实例?

android - 为什么我使用 NDK 源代码获得 python 和 perl?

git - 一种限制 Git 分支访问的方法?

ruby-on-rails - 如何彻底清理 ruby​​ on Rails 项目?

git - Gerrit 重复请求被拒绝

git - 使用 Git 为多个客户端管理来自 master 分支的多个分支

git - 撤消 git rm -f [文件]

git - 如何仅从给定提交中记录的文件中恢复几行?

git - 跨计算机快速同步 git 工作区

asp.net - 我们如何在共享工作环境中使用版本控制?