如何从现有回购的分支中创build新的GitHub回购?

我有硕士新项目分支。 现在,我想在新项目分支的基础上创build一个全新的回购。

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

我开始@ user292677的想法,并提出了解决我的问题:

  1. 在github中创build新的回购
  2. cd到您想要提取的旧回购的本地副本,这是设置为跟踪将成为新回购的主人的新项目分支。
  3. $ git push git@github.com:accountname/new-repo +new-project:master

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

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

事实上,我发现通过使用这种方法,我可以创build新的回购与手工挑选分支的select,改名为我想要的:

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

结果是,现有的site3a分支现在也移动到新的回购,并将显示为rails3 。 这非常有效:networking图表显示了具有完整历史和彼此之间正确关系的新的主站rails3

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

 git clone -b new-project /path/to/repo /new/repo/path 

编辑:在GitHub中,你可以“分叉”回购,然后去你的克隆的pipe理选项卡。 “存储库名称”和“可见性”下面是“分支”下拉菜单。 selectnew-project

重新编辑:我刚刚意识到这是您要设置的master分支,不只是“默认”分支。 所以…

  • 在GitHub上,克隆them/repoyou/repo
  • 运行git clone git@github.com:you/repo.git
  • 开始gitk
  • [你可能想创build一个old-master分支,所以你不会忘记旧的提交。]
  • new-project分支上查找最近的提交,右键单击提交消息,然后select“将主分支重置为此处”。 (你也可以使用git-reset在命令行执行此操作,但是我没有弄清楚正确的调用。)

你的下一个推到你的GitHub仓库需要用--force选项来完成,否则你就完成了。

如果这是你自己的回购之一,你正在这样做…

  • 运行git clone git@github.com:you/orig.git
  • 运行git clone orig copy
  • 正如我上面所述,但从本地copy回购,重置master分支到你想要的地方。
  • 创buildyou/copy的空的GitHub项目。 按照GitHub上的指示,将该项目设置为本地版本的远程copy ,然后按下master ,即可完成!

更新:

cd到包含old_branch的本地回购和:

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

不知道这是否是一个好方法,但反正很简单:

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

然后在github上创build一个新的回购,并推动它。

记住,当你简单地创build一个新的回购协议时,就会失去对旧协议的引用,并且难以保持对与新协议同步的原始项目的任何更新。 叉回购也许不是更好吗?

除了正确的答案之外:

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

“git@github.com:accountname / new_repo”=>从github获得“克隆或下载”下拉菜单

  1. 在github中创buildNEW_REPOSITORY。
  2. cd OLD_REPOSITORY
  3. git push https://github.com/accountname/NEW_REPO + master:master

这就是全部。 (注意:保存git历史logging)

我已经尝试了上面的答案,发现它不够具体,因为它没有指定+主:主这是我需要使它的工作。 它工作很好。

来源(与我的修改,以避免与github ssh问题):Mauricio Aiello,前Java高级开发人员, https ://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a 分枝function于一个现有的存储库