如何从一个已有的GitHub存储库的分支创建一个新的GitHub存储库?

wnvonmuf  于 2022-12-10  发布在  Git
关注(0)|答案(7)|浏览(132)

我有masternew-project分支,现在我想创建一个全新的回购,它的master基于new-project分支。
背景说明:我有一个存储库,其中包含三个独立的应用程序。它不是这样开始的。最初只有一个应用程序在存储库中。但随着时间的推移,业务需求发生了变化。一个应用程序变成了两个(一个遗留版本和一个重写版本)。添加了一个Web服务。使用单独的分支来包含这三个项目。但是,它们不共享任何代码。因此将它们拆分到各自的存储库中会更简单。

gstyhher

gstyhher1#

我从@user292677的想法开始,并对它进行了改进以解决我的问题:
1.在github中创建new-repo

  1. cd到您要从中提取的旧存储库的本地副本,该副本被设置为跟踪将成为new-repo主存储库的new-project分支。
  2. $ git push [https://github.com/accountname/new-repo.git](https://github.com/accountname/new-repo.git) +new-project:master
    新的Github repo完成了。结果是;
  • 一个名为new-repo的新Github存储库,
  • master对应于旧存储库的new-project
  • 所有的历史都被保留了下来。

事实上,我发现通过使用这种方法,我可以使用精选的分支创建新的存储库,并根据需要重新命名:
$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3
结果是,预先存在的site 3a分支现在也被移动到新的存储库中,并将显示为rails 3。网络图显示了新的masterrails 3,它们具有完整的历史记录,并且彼此具有正确的关系。
2013年12月7日更新:在另一个项目中使用了这个,并验证了这个配方仍然有效。
2018年1月11日更新:更新了步骤3。使用GitHub推荐的https协议。配方仍然有效。

pftdvrlh

pftdvrlh2#

更新:
cd到包含old_分支和以下内容的本地存储库:

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

wgmfuz8q3#

1.在github中创建NEW_REPOSITORY。

  1. cd旧存储库
  2. git push https://github.com/accountname/NEW_REPO +主进程:主进程
    这就是全部。(注:保留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
kulphzqa

kulphzqa4#

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

编辑:在GitHub中,你可以“fork”仓库,然后进入你克隆的管理标签。在“仓库名称”和“可见性”下面是“默认分支”,有一个分支下拉菜单。选择new-project
重新编辑:我刚刚意识到你要设置的是master分支,而不仅仅是“默认”分支。

  • 在GitHub上,将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分支重置到所需的位置。
  • 创建一个空的GitHub项目you/copy,按照GitHub上的说明将该项目设置为本地版本copy的远程项目,然后按master,就完成了!
fcg9iug3

fcg9iug35#

不确定这是否是个好办法,但反正很容易:

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

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

7uzetpgm

7uzetpgm6#

请记住,当您只是创建一个新的repo时,您会丢失对旧repo的引用,并且使维护与新repo同步的原始项目的任何更新变得更加困难。

3b6akqbq

3b6akqbq7#

如果你爱上了SourceTree,只需做一些简单的步骤
1.查看要克隆为新回购协议的品牌
1.通过单击SourceTree中工具栏上的终端按钮打开此品牌上的终端
1.向终端$ git push https://github.com/accountname/new_repo.git给予命令
基于Alexey Kislitsin's answer的git命令。感谢Alexey Kislitsin

相关问题