2011-11-02 79 views
5

我以为我的git漂亮了,但是我对这个问题有点阻碍。Github:将一个新的开发分支插入我的叉

下面是图片:我将一个项目的'develop'分支分成了我自己的github回购,克隆到本地,创建了git-flow功能,做了一些东西并发布。一切都好。

与此同时,原来的项目变成了一个新的开发分支(称之为'develop2'),所以我发布的功能无法被引入到主项目中。

所以 - 建议 - 我创建了一个本地'develop2'分支,删除了我的本地'develop'分支,从主项目回购中拉出'develop2',然后将其与我的本地功能合并。一切正常,除... 我个人的github回购仍然有旧的'开发'分支和基于该分支的功能。

所以,我的问题是我现在要做什么? 几个选项我已考虑:

  1. 删除我在从主体工程github上,叉“develop2”全部“发展”叉,然后将这个我的本地回购,合并,然后再次发布我的特点并发出拉请求。 (不确定性寿:我需要克隆,而不是拉新的分支所以它有正确的由来。)
  2. 删除“发展”的起源和特性分支,推新develop2分支,等等
  3. 力推我的“develop2”分支起源发展,然后将其重命名,并做相同的特征..

如果出现任何错误,虽然我可能卡住具有重做了一大堆东西哪至少可以说是无聊的。 任何意见从那里的专家?

回答

3

你绝对不需要重做东西 - Git有很好的处理这类问题的能力。首先,GitHub上的叉子是整个仓库,所以删除你的“开发”叉“并不意味着什么 - 你只需要将上游develop2变化带入你的分支。我建议添加一个名为upstream的远程设备,以便从我分叉的存储库中轻松获取更改。

现在假设您添加了upstreamgit fetch应该将upstream/develop2下拉到您的本地存储库中。我会撤销你的合并(可能是git reset --hard develop~),从那里创建一个develop2分支以保持一致性,然后将你的本地develop2更改分配到upstream/develop2git rebase --onto upstream/develop2 upstream/develop develop

前:

   X---Y---Z upstream/develop2 
      /
      |   H---I---J develop, develop2 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 

后:

     H'--I'--J' develop2 
        /
       X---Y---Z upstream/develop2 
      /
      |   H---I---J develop 
      |  /
      | E---F---G upstream/develop 
      |/ 
A---B---C---D 
+0

谢谢 - 是的,这是有道理的。但我想我已经找到答案了。让我的github回购符合我的本地。基本上我的选择2以上,但需要一个小github细节。页面在这里:http://matthew-brett.github.com/pydagogue/gh_delete_master.html 总结: 1. git push origin develop2(新开发分支到github回购) 2。转到github回购,点击'管理员',设置默认分支开发2 3.然后可以删除旧的开发分支即。 git push origin:develop 4.然后像往常一样推送功能。 – user1025174

相关问题