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
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'
- 3 回答
- 0 关注
- 652 浏览
添加回答
举报