为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
翻过高山走不出你 2019-12-09 13:14:04
我有一个以特定方式浏览其他Web应用程序的Web应用程序。它在一个demos文件夹中包含一些Web演示,并且其中一个演示现在应该具有自己的存储库。我想为此演示应用程序创建一个单独的存储库,并使其成为分包 主存储库中的子模块,而不会丢失其提交历史记录。是否可以保留存储库文件夹中文件的提交历史记录,并从中创建存储库并将其用作子模块?
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

克隆并保留所有这些额外分支和提交的简单方法:


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-repo

cd new-repo

git clone-branches

git remote rm origin

git remote add origin git@github.com:user/new-repo.git

git remote -v

git filter-branch --subdirectory-filter my_directory/ -- --all

git push --all

git push --tags


查看完整回答
反对 回复 2019-12-09
?
月关宝盒

TA贡献1772条经验 获得超5个赞

GabLeRoux的解决方案效果很好,除非您使用git lfs该文件,并且在要分离的目录下有大文件。在这种情况下,在第3步之后,所有大文件都将保留为指针文件,而不是实际文件。我猜可能是由于.gitattributes文件在过滤器分支过程中被删除了。


意识到这一点,我发现以下解决方案适用于我:


cp .gitattributes .git/info/attributes

将.gitattributes哪个git lfs用于跟踪大文件的文件复制到.git/目录中,以避免被删除。


过滤分支完成后,.gitattributes如果您仍要对新存储库使用git lfs,请不要忘记放回:


mv .git/info/attributes .gitattributes

git add .gitattributes

git commit -m 'added back .gitattributes'


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 652 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信