如何删除git嵌套repo但保留其中一个分支的文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除git嵌套repo但保留其中一个分支的文件?相关的知识,希望对你有一定的参考价值。

我刚刚将一个目录复制到另一个本地git仓库。事实证明,我复制的目录也是另一个git repo,所以现在我假设我称之为嵌套repo。

我想保留外部仓库,然后将内部仓库整合为外部仓库(根据需要修改远程原产地)。我担心的一个问题是因为内部仓库有几个分支。我想保留其中只有一个分支。

我对解决这个问题的最佳做法感到困惑。希望有人可以给我一些指示。谢谢!

答案

您只能保留文件,而不是历史记录。

  • 在另一个位置结帐所需的分支。
  • 将其他仓库复制到目标仓库中。
  • 从目标文件夹中删除.git文件夹和任何.git*文件。
  • 将新文件夹签入目标仓库

git shell这样做:

/other/location/otherPrepo>git checkout the-branch-wanted
/other/location/otherPrepo>cp -R  * -R /target/location/targetRepo/targetFolder/
/other/location/otherPrepo>rm -rf /target/location/targetRepo/targetFolder/.git*
/other/location/otherPrepo>cd  /target/location/targetRepo/
/target/location/targetRepo/>git add  targetFolder
/target/location/targetRepo/>git commit -m "added files from otherPrepo"

[编辑:]不要忘记签到...

另一答案

您可以使用git subtree从第二个存储库导入文件,同时保留其历史记录。

  1. 从干净的工作树开始(查看git status)。如果您已尝试手动复制文件,请将其删除。 Git会为你复制它们。
  2. cd到您的存储库的顶层。
  3. 运行git subtree add --prefix=inner path/to/other/repo some-branch。这将创建一个inner子目录,并将其他repo的some-branch的内容放入其中。
  4. 观察git log显示导入文件的历史记录。

以上是关于如何删除git嵌套repo但保留其中一个分支的文件?的主要内容,如果未能解决你的问题,请参考以下文章

git merge:删除我想保留的文件!

删除 git repo 中的文件夹? [复制]

如何将一些文件从一个 git repo 移动到另一个(不是克隆),保留历史记录

如何删除 Git 合并? [复制]

git 按子文件夹拆分存储库并保留所有旧分支

Git - 每个分支的单独文件夹。设置它