我有master和new-project分支,现在我想创建一个全新的回购,它的master基于new-project分支。背景说明:我有一个存储库,其中包含三个独立的应用程序。它不是这样开始的。最初只有一个应用程序在存储库中。但随着时间的推移,业务需求发生了变化。一个应用程序变成了两个(一个遗留版本和一个重写版本)。添加了一个Web服务。使用单独的分支来包含这三个项目。但是,它们不共享任何代码。因此将它们拆分到各自的存储库中会更简单。
gstyhher1#
我从@user292677的想法开始,并对它进行了改进以解决我的问题:1.在github中创建new-repo。
$ git push [https://github.com/accountname/new-repo.git](https://github.com/accountname/new-repo.git) +new-project:master
master
事实上,我发现通过使用这种方法,我可以使用精选的分支创建新的存储库,并根据需要重新命名:$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3结果是,预先存在的site 3a分支现在也被移动到新的存储库中,并将显示为rails 3。网络图显示了新的master和rails 3,它们具有完整的历史记录,并且彼此具有正确的关系。2013年12月7日更新:在另一个项目中使用了这个,并验证了这个配方仍然有效。2018年1月11日更新:更新了步骤3。使用GitHub推荐的https协议。配方仍然有效。
$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3
pftdvrlh2#
更新:cd到包含old_分支和以下内容的本地存储库:
$ git push https://github.com/accountname/new_repo.git +old_branch:master
wgmfuz8q3#
1.在github中创建NEW_REPOSITORY。
kulphzqa4#
git clone -b new-project /path/to/repo /new/repo/path
编辑:在GitHub中,你可以“fork”仓库,然后进入你克隆的管理标签。在“仓库名称”和“可见性”下面是“默认分支”,有一个分支下拉菜单。选择new-project。重新编辑:我刚刚意识到你要设置的是master分支,而不仅仅是“默认”分支。
new-project
them/repo
you/repo
git clone git@github.com:you/repo.git
gitk
old-master
git-reset
下一次推送到GitHub repo需要使用--force选项,否则就完成了。如果这是你自己的一个回购你这样做是为了...
--force
git clone git@github.com:you/orig.git
git clone orig copy
copy
you/copy
fcg9iug35#
不确定这是否是个好办法,但反正很容易:
git clone -b new-project git@github.com:User/YourProject.git newProjcet
然后在github上创建一个新的repo,并推送它。
7uzetpgm6#
请记住,当您只是创建一个新的repo时,您会丢失对旧repo的引用,并且使维护与新repo同步的原始项目的任何更新变得更加困难。
3b6akqbq7#
如果你爱上了SourceTree,只需做一些简单的步骤1.查看要克隆为新回购协议的品牌1.通过单击SourceTree中工具栏上的终端按钮打开此品牌上的终端1.向终端$ git push https://github.com/accountname/new_repo.git给予命令基于Alexey Kislitsin's answer的git命令。感谢Alexey Kislitsin
$ git push https://github.com/accountname/new_repo.git
7条答案
按热度按时间gstyhher1#
我从@user292677的想法开始,并对它进行了改进以解决我的问题:
1.在github中创建new-repo。
$ git push [https://github.com/accountname/new-repo.git](https://github.com/accountname/new-repo.git) +new-project:master
新的Github repo完成了。结果是;
master
对应于旧存储库的new-project,事实上,我发现通过使用这种方法,我可以使用精选的分支创建新的存储库,并根据需要重新命名:
$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3
结果是,预先存在的site 3a分支现在也被移动到新的存储库中,并将显示为rails 3。网络图显示了新的master和rails 3,它们具有完整的历史记录,并且彼此具有正确的关系。
2013年12月7日更新:在另一个项目中使用了这个,并验证了这个配方仍然有效。
2018年1月11日更新:更新了步骤3。使用GitHub推荐的https协议。配方仍然有效。
pftdvrlh2#
更新:
cd到包含old_分支和以下内容的本地存储库:
wgmfuz8q3#
1.在github中创建NEW_REPOSITORY。
这就是全部。(注:保留git历史记录)
我试过上面的答案,发现它不够具体,因为它没有指定+master:master,这是我需要让它工作。它工作得很好。
源代码(为了避免github的ssh问题,我做了一些修改):Mauricio Aiello,前Java高级开发人员,https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a-branch-in-an-existing-repository
kulphzqa4#
编辑:在GitHub中,你可以“fork”仓库,然后进入你克隆的管理标签。在“仓库名称”和“可见性”下面是“默认分支”,有一个分支下拉菜单。选择
new-project
。重新编辑:我刚刚意识到你要设置的是
master
分支,而不仅仅是“默认”分支。them/repo
克隆为you/repo
。git clone git@github.com:you/repo.git
gitk
。old-master
分支,这样就不会丢失旧提交的跟踪。]new-project
分支上找到最近的提交,右键单击提交消息,然后选择“Reset master branch to here”(您也可以在命令行中使用git-reset
来执行此操作,但我还没有找到正确的调用)。下一次推送到GitHub repo需要使用
--force
选项,否则就完成了。如果这是你自己的一个回购你这样做是为了...
git clone git@github.com:you/orig.git
git clone orig copy
copy
存储库中,将master
分支重置到所需的位置。you/copy
,按照GitHub上的说明将该项目设置为本地版本copy
的远程项目,然后按master
,就完成了!fcg9iug35#
不确定这是否是个好办法,但反正很容易:
然后在github上创建一个新的repo,并推送它。
7uzetpgm6#
请记住,当您只是创建一个新的repo时,您会丢失对旧repo的引用,并且使维护与新repo同步的原始项目的任何更新变得更加困难。
3b6akqbq7#
如果你爱上了SourceTree,只需做一些简单的步骤
1.查看要克隆为新回购协议的品牌
1.通过单击SourceTree中工具栏上的终端按钮打开此品牌上的终端
1.向终端
$ git push https://github.com/accountname/new_repo.git
给予命令基于Alexey Kislitsin's answer的git命令。感谢Alexey Kislitsin