Github:将一个新的开发分支放入我的分支

时间:2011-11-02 09:29:41

标签: git github

我以为我的git很漂亮,但我对这个问题有点不知所措。

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

与此同时,原始项目改为新的开发分支(称之为'develop2'),因此我发布的功能无法进入主项目。

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

所以,我的问题是我现在该怎么办? 我考虑过几个选项:

  1. 在github上完全删除我的'develop'fork,从主项目中删除'develop2',然后将其拉到我的本地仓库并合并,然后再次发布我的功能并发出拉取请求。 (不确定性:我需要克隆而不是拉新叉子,因此它有正确的原点..)
  2. 删除原点和功能上的'develop'分支,推送新的develop2分支,依此类推
  3. 强制推送我的'develop2'分支到原点开发,然后重命名,并对该功能执行相同的操作..
  4. 如果出现任何问题,我可能会不得不重做一大堆至少可以说是令人厌烦的东西。 来自大师的任何建议吗?

1 个答案:

答案 0 :(得分:3)

你绝对不需要重做东西--Git能够很好地处理这类问题。

首先,GitHub上的for是整个存储库,所以删除你的“'develop'fork”并不意味着什么 - 你只需要将上游develop2更改带入你的fork。我建议添加一个名为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