我有主项目分支和新项目分支。现在我想创建一个全新的回购与它的主人基于新项目分支。

背景:我有一个存储库,其中包含三个独立的应用程序。事情并不是这样开始的。原本只有一个应用程序在回购。然而,随着时间的推移,业务需求发生了变化。一个应用变成了两个(一个遗留版本和一个重写版本)。添加了web服务。单独的分支被用来包含这三个项目。但是,它们不共享任何代码。所以把它们分成自己的回购会更简单。


当前回答

请记住,当您只是创建一个新的repo时,您将失去对旧repo的引用,并且使对原始项目的任何更新都难以与新repo同步。也许把回购的钱分叉不是更好吗?

其他回答

不确定这是不是一个好方法,但无论如何都很简单:

git clone -b new-project git@github.com:User/YourProject.git newProjcet

然后在github上创建一个新的repo,并推送它。

我从@user292677的想法开始,改进它来解决我的问题:

在github中创建new-repo。 CD到您想从中提取的旧回购的本地副本,该副本被设置为跟踪将成为新回购主库的新项目分支。 $ git推送https://github.com/accountname/new-repo.git +new-project:master

新的Github回购完成。结果是;

一个名为new-repo的Github新仓库, 旧回购的新项目与谁的master对应 所有的历史都保存了下来。

事实上,我发现通过使用这种方法,我可以用精心挑选的分支创建新的repo,并按我想要的重命名:

$ git推送git@github.com:accountname/new_repo +new-project:master +site3a:rails3

结果是,现有的site3a分支现在也移动到新的回购中,并将显示为rails3。这工作得非常好:网络图显示了新的主服务器和rails3的完整历史和彼此之间的正确关系。

更新2013-12-07:使用此与另一个项目,并验证此配方仍然有效。

更新2018-01-11:更新步骤3。使用GitHub推荐https协议。配方仍然有效。

如果你爱上了SourceTree,只需做一些简单的步骤

检查品牌你想克隆为新的回购 打开终端上的该品牌通过点击终端上的按钮 SourceTree中的工具栏 将命令发送到终端$ git push https://github.com/accountname/new_repo.git

git命令基于Alexey Kislitsin的回答。谢谢Alexey Kislitsin

请记住,当您只是创建一个新的repo时,您将失去对旧repo的引用,并且使对原始项目的任何更新都难以与新repo同步。也许把回购的钱分叉不是更好吗?

更新:

CD到本地回购包含old_branch和:

$ git push https://github.com/accountname/new_repo.git +old_branch:master