从文件夹创建子模块存储库并保留其git提交历史记录

我有一个以特定方式浏览其他Web应用程序的Web应用程序。它在一个demos文件夹中包含一些Web演示,并且其中一个演示现在应该具有自己的存储库。我想为此演示应用程序创建一个单独的存储库,并使其成为分包 主存储库中的子模块,而不会丢失其提交历史记录。


是否可以保留存储库文件夹中文件的提交历史记录,并从中创建存储库并将其用作子模块?


翻过高山走不出你
浏览 655回答 3
3回答

神不在的星期二

克隆并保留所有这些额外分支和提交的简单方法:1-确保您具有此git别名git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'2-克隆遥控器,拉出所有分支,更改遥控器,过滤目录,按入git clone git@github.com:user/existing-repo.git new-repocd new-repogit clone-branchesgit remote rm origingit remote add origin git@github.com:user/new-repo.gitgit remote -vgit filter-branch --subdirectory-filter my_directory/ -- --allgit push --allgit push --tags

月关宝盒

GabLeRoux的解决方案效果很好,除非您使用git lfs该文件,并且在要分离的目录下有大文件。在这种情况下,在第3步之后,所有大文件都将保留为指针文件,而不是实际文件。我猜可能是由于.gitattributes文件在过滤器分支过程中被删除了。意识到这一点,我发现以下解决方案适用于我:cp .gitattributes .git/info/attributes将.gitattributes哪个git lfs用于跟踪大文件的文件复制到.git/目录中,以避免被删除。过滤分支完成后,.gitattributes如果您仍要对新存储库使用git lfs,请不要忘记放回:mv .git/info/attributes .gitattributesgit add .gitattributesgit commit -m 'added back .gitattributes'
打开App,查看更多内容
随时随地看视频慕课网APP