Answers:
我从@ user292677的想法开始,并对其进行完善以解决我的问题:
$ git push https://github.com/accountname/new-repo.git +new-project:master
新的Github存储库已完成。结果是;
master
对应于旧仓库的new项目,具有实际上,我发现通过使用此方法,我可以创建带有手工选择的分支的新回购协议,并按需要重命名:
$ git push git@github.com:accountname/new_repo +new-project:master +site3a:rails3
结果是,先前存在的site3a分支现在也移到了新的仓库中,将显示为rails3。这确实非常有效:网络图显示了具有完整历史记录且彼此之间具有正确关系的新的master和rails3。
2013年12月7日更新:将此项目与另一个项目一起使用,并验证了此配方仍然有效。
更新2018-01-11:更新了步骤3.以将GitHub建议用于https协议。食谱仍然有效。
--follow-tags
要这样做。
push
在本地存储库上创建(例如,git init
而不是Github> New> ...)
git clone -b new-project /path/to/repo /new/repo/path
编辑:在GitHub中,您可以“分叉”存储库,然后转到克隆中的“管理”选项卡。在“存储库名称”和“可见性”下面是“默认分支”,带有分支的下拉菜单。选择new-project
。
重新编辑:我只是意识到这是master
您要设置的分支,而不仅仅是“默认”分支。所以…
them/repo
到you/repo
。 git clone git@github.com:you/repo.git
gitk
。 old-master
分支,以免丢失对旧提交的跟踪。] new-project
分支上找到最新的提交,右键单击提交消息,然后选择“将主分支重置到此处”。(您也可以在命令git-reset
行使用来执行此操作,但是我还没有弄清楚正确的调用。)下一次推送到GitHub存储库的操作将需要使用该--force
选项来完成,但否则就完成了。
如果这是您自己的存储库之一,则可以执行以下操作:
git clone git@github.com:you/orig.git
git clone orig copy
copy
库中,将master
分支重置到所需位置。 you/copy
。遵循GitHub上的指示,将该项目设置为本地版本copy
,push 的远程对象master
,就完成了!仅此而已。(注意:git历史记录保留)
我已经尝试了上面的答案,但发现它不够具体,因为它没有指定+ master:master,这是我使其工作所需的。效果很好。
来源(为避免github出现ssh问题,我进行了修改):Mauricio Aiello,前Java高级开发人员,https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a 在现有存储库中分支
记住,当您仅创建一个新的存储库时,您将失去对旧存储库的引用,从而使维护与新存储库同步的原始项目的任何更新变得更加困难。也许分叉仓库不是更好吗?