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

use*_*174 5 git github

我以为我的git很漂亮,但我对这个问题有点困惑.

这是图片:我将"开发"分支从一个项目分成我自己的github仓库,克隆到本地,创建了git-flow功能,做了一些东西并发布了.一切都很好.

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

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

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

  1. 在github上完全删除我的'develop'分叉,从主项目中删除'develop2',然后将其拉到我的本地仓库并合并,然后再次发布我的功能并发出拉取请求.(不确定性:我需要克隆而不是拉新叉子,因此它具有正确的原点..)
  2. 删除原点和功能上的'develop'分支,推送新的develop2分支,依此类推
  3. 强制推动我的'develop2'分支到原点开发,然后重命名它,并对该功能执行相同的操作.

如果出现任何问题,我可能会不得不重做一大堆至少可以说很烦人的东西.来自大师的任何建议吗?

dah*_*byk 3

你绝对不需要重做东西——Git 完全可以处理这类问题。

首先,GitHub 上的分叉是整个存储库,因此删除您的“开发分叉”并不意味着任何事情 - 您只需将上游更改引入develop2您的分叉即可。我建议添加一个远程调用upstream,以便轻松地从我分叉的存储库中获取更改。

现在假设您添加了upstream, agit fetch应该下拉upstream/develop2到您的本地存储库中。我会撤消您的合并(可能git reset --hard develop~),从那里创建一个develop2分支以保持一致性,然后将您的本地develop2更改重新设置为upstream/develop2: git 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
Run Code Online (Sandbox Code Playgroud)

后:

                        H'--I'--J' develop2
                       /
              X---Y---Z upstream/develop2
             /
            |           H---I---J  develop
            |          /
            | E---F---G  upstream/develop
            |/
A---B---C---D
Run Code Online (Sandbox Code Playgroud)