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

标签 git github

我以为我对 git 已经很熟悉了,但我对这个问题有点不知所措。

这是图片:我将一个项目的“开发”分支 fork 到我自己的 github 存储库中,克隆到本地,创建 git-flow 功能,做一些事情并发布。一切都很好。

与此同时,原始项目更改为新的开发分支(称为“develop2”),因此无法将我发布的功能 pull 入主项目。

所以 - 根据建议 - 我创建了一个本地“develop2”分支,删除了我本地的“develop”分支,从主项目 repo 中提取了“develop2”,然后将其与我的本地功能 merge 。一切都很好,除了... 我的个人 github 存储库仍然有旧的“开发”分支和基于该分支的功能。

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

  1. 在 github 上完全删除我的“develop”分支,从主项目中分支“develop2”,然后将其 pull 到我的本地存储库并 merge ,然后再次发布我的功能并发出 pull 请求。 (不确定的是:我是否需要克隆而不是 pull 新的 fork 以使其具有正确的来源......)
  2. 删除 origin 和 feature 上的 'develop' 分支,推送新的 develop2 分支,等等
  3. 强制将我的“develop2”分支推送到 origin develop,然后重命名它,并对功能执行相同的操作..

如果出现任何问题,尽管我可能不得不重做一大堆至少可以说是令人厌烦的东西。 专家们有什么建议吗?

最佳答案

您绝对不需要重做 - Git 可以很好地处理此类问题。

首先,GitHub 上的分支是整个存储库,因此删除“'develop' 分支”实际上没有任何意义——您只需要将上游 develop2 更改引入您的分支即可。我建议添加一个名为 upstream 的远程服务器,以便轻松地从我 fork 的存储库中获取更改。

现在假设您添加了 upstreamgit fetch 应该将 upstream/develop2 pull 到您的本地存储库中。我会撤消你的 merge (可能是 git reset --hard develop~),从那里创建一个 develop2 分支以保持一致性,然后 rebase 你的本地 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

之后:

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

关于Github:将一个新的开发分支放入我的分支中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7978101/

相关文章:

github - IntelliJ 无法登录 GitHub

github - Ubuntu Github ssh key 问题

c - Git - 获取用于日志的代码/版本标识符

git - 我们应该在 merge 到 master 后删除远程 Git 分支吗?

GitHub - 工作 : what is : use actions/checkout

Git 和 Github 工作流程,使用父级更改更新子树

git - 什么是子模块 fork 的良好工作流程

git - 如何在 GitHub 中创建分支

Git-archive 远程端挂了

node.js - WebRTC在不同网络中没有视频