可以/我应该分叉我自己的github回购?

时间:2012-03-11 19:33:36

标签: git github

我的github repo叫做Programming-iOS-4-Book-Examples,因为它是我书中的示例代码"编程iOS 4"。现在我已经写了一本新版本的书,重新编写了#3;编程iOS 5"。我需要使用旧名称保留旧的仓库,因为网络上有链接,有人可能需要旧代码。但是现在我还想要一个新的名称,包括为iOS 5改写的相同示例(还有一些新的)改编的iOS-5-Book-Examples。

当然,我看到了这个:How can I fork my own GitHub repository?但是建议使用分支。那不适合我。我不想使用分支,因为这样做的目的是为了给回购提供一个我可以链接的名称。我希望公众在iOS 4回购中找到我的iOS 4示例,在iOS 5回购中找到我的iOS 5示例。

这似乎是一个完美的叉子使用,但是当我按下Fork按钮时没有任何反应;我显然不允许分叉我自己的回购。

当然我可以把它作为一个全新的回购,但这意味着分别上传所有资源,这是不幸的,因为iOS 4回购中的一切都已经存在。我还是必须这样做吗?

4 个答案:

答案 0 :(得分:20)

您不能拥有两个具有相同名称的存储库,并且在Github上分叉会自动传输名称,这就是阻止其工作的原因。听起来您可以通过在本地添加分支,然后使用新名称推送到新的Github存储库来获得良好的服务。您甚至可以将Github repo显示为master作为分支:

git clone git://github.com/you/repo.git
git checkout -b new_book
[ create new repo on Github ]
git remote add new_origin git://github.com/you/repo.git
git push new_origin new_book:master

只需使用更合适的名字,你就是金色的。您可以将更新合并到共享示例,向新书代码中添加其他示例,并在进行更改时只需推送到originnew_origin(使用上面的示例名称)。

答案 1 :(得分:5)

我知道这已经过时但我最近遇到了同样的问题。对我有用的是以下内容:

  1. 在github上创建一个new_repo
  2. git clone new_repo
  3. cd new_repo
  4. git remote add upstream old_repo.git
  5. git pull upstream master
  6. git push origin master
  7. 我从here获得了以上所有内容。

答案 2 :(得分:3)

鉴于您可以在回购中使用链接分支的URL,您仍然可以使用分支,INMHO是这种情况的自然而简单的方法。

例如,您可以使用iOS4示例的以下URL:  https://github.com/mattneub/Programming-iOS-Book-Examples/tree/ios4

对于iOS5示例https://github.com/mattneub/Programming-iOS-Book-Examples/tree/ios5,其中ios4ios5是您的分支名称。

答案 3 :(得分:2)

最后这就是我的所作所为:

  1. 我重命名了现有的回购。这非常有效(感谢github,因为它非常简单)。不要忘记编辑您自己的git repo的config文件,以保持您自己的主分支和github repo的主分支之间的远程分支关系。

  2. 我使用旧的repo名称创建了一个新的repo,只包含 README.md ,提供现有repo的新URL。

  3. 因此,我最终没有将iOS 4书籍内容与iOS 5书籍内容分开。相反,我重新安排了原始仓库的结构并给它一个更通用的名称,特别是与iOS 4无关。现有的旧回购链接不会中断,因为该URL上有一个占位符仓库,指向新仓库。

相关问题