Git创建一个只包含指定目录及其历史记录的新分支,然后推送到新存储库
我想在我的repo中创建一个新分支,它只包含master中特定目录的文件及其历史记录,然后将该分支推送到一个新的存储库 …或类似的东西–例如,可以将目录推送到新存储库,再推送到新的repo,而无需创建分支 到目前为止,我认为下面的方法会起作用,但我想知道是否有一种更精简的方法 1-创建空分支:Git创建一个只包含指定目录及其历史记录的新分支,然后推送到新存储库,git,branch,git-filter-branch,Git,Branch,Git Filter Branch,我想在我的repo中创建一个新分支,它只包含master中特定目录的文件及其历史记录,然后将该分支推送到一个新的存储库 …或类似的东西–例如,可以将目录推送到新存储库,再推送到新的repo,而无需创建分支 到目前为止,我认为下面的方法会起作用,但我想知道是否有一种更精简的方法 1-创建空分支: git symbolic-ref HEAD refs/heads/<new-branch> rm .git/index git clean -fdx git符号参考头参考/头/ 吉特令吉/
git symbolic-ref HEAD refs/heads/<new-branch>
rm .git/index
git clean -fdx
git符号参考头参考/头/
吉特令吉/索引
git-clean-fdx
2-从主服务器签出目录:
git checkout master <paths> ...
git add <paths> ...
git commit
git签出主机。。。
git添加。。。
git提交
3-将分支推送到新的远程:
git push -u <remote-URL> <new-branch>
git推送-u
4-然后,在新回购协议中,将分支机构与主机构合并:
git checkout -t origin/<new-branch>
git checkout master
git merge <new-branch>
git branch -d afterimage
git branch -d -r afterimage
git签出-t源/
切换到主分支
git合并
git分支-d后像
git分支-d-r后像
我正在尝试做一些与相同的事情,但是没有
git过滤器分支
mess。为什么不使用git过滤器分支
?它是专门为您想要的任务而构建的
git branch subdir_branch HEAD
git filter-branch --subdirectory-filter dir/to/filter -- subdir_branch
git push git://.../new_repo.git subdir_branch:master
这将只提供新存储库中
dir/to/filter
的内容,包括其所有历史记录,仅此而已。因为您将只过滤新创建的分支,所以存储库的其余部分保持不变。您可以随后删除子目录分支
。…但实际上需要使用git filter分支
来提取子目录的历史记录。没有这些,你只会得到文件。我真的看不出不关注PostYou链接的兴趣。按照您建议的方式进行操作是可行的,但这是一种蛮力,不会清理您的历史记录或存储库数据。