git - 我如何在本地创建 "clean up"分支,而不破坏其他人的一切?

标签 git branch

我正在从其他人的存储库中提取更改(出于宣泄的原因,我们将其称为“gitnoob”),其中的内容混合在一起。显然,他们一开始都是在主分支工作,然后才了解分支。它看起来有点像这样:

                  d - f <--- stuff
                 /   /
A - b - 1 - c - 2 - E <--- dev

这些数字是应该在另一个分支中的提交,如果我将它们 merge 到我自己的 dev 分支中,可能会破坏事情。 (稍后我会将它们从 upstream/dev 中提取 - upstream 是我们的共享父存储库 - 一旦它们 merge 到那里。)小写字母是提交应该是 stuff 的一部分,大写的是合法 merge 到 dev 中的提交。

理想情况下,我想在我这边清理这个问题——在本地拥有这样的东西:

  b - c - d - f <--- stuff
 /           /
A --------- E <--- dev

现在,stuff 无论如何都会发生所有与 stuff 相关的更改,因为 gitnoob/stuff 也将包含所有差异在 upstream/devgitnoob/dev 之间(合法的 dev 已经在我的 dev 中) > 分支)。问题是,这意味着 stuff 也会有提交 12,这很可能会破坏事情。

我需要能够从gitnoob/stuff中提取更改,而无需大量麻烦(并且,如果可能的话,无需将1和2放回那里,直到它们出现在上游),并让他们从我这里获取更改,而不会恢复或删除任何内容。

我该怎么做?或者我只是在 stuff 中使用 1 和 2?

最佳答案

所以基本上,您需要一个可以恢复 12stuff 的私有(private)版本,但是您自己的 stuff 的公共(public)版本 仍然包含它供 gitnoob 从中提取。没有无缝的方法可以做到这一点,但实现它的一种方法是引入几个新分支:

...d-f <---stuff-upstream
      \
       g <---reverted-stuff
        \
         h <---my-stuff

您要做的就是创建一个恢复 12reverted-stuff 分支。当您想要进行与 gitnoob 共享的更改时,您可以从 reverted-stuff 分支到 my-stuff。在 my-stuff 上正常更改并提交。您也应该能够将您的 dev merge 到 my-stuff 中。

当您准备好共享更改时,使用 git rebase --onto stuff-upstream reverted- 将 my-stuff rebase 回 stuff-upstream填充我的东西。这将删除 g 中的恢复,并使其看起来像 my-stuff 是直接从 stuff-upstream 分支的,允许 gitnoob 毫无恐惧地 pull .

当您从 gitnoob pull 时, pull 入 stuff-upstream,然后将其 merge 到 reverted-stuff。该 merge 将自动重新应用 g,即您恢复 12 的位置。然后,您可以从 reverted-stuff 分支出一个新的 my-stuff

话虽这么说,如果 12 真的像你所说的那样有问题,那么你也可以通过将其从他的分支中取出来帮 gitnoob 一个忙。如果情况没那么糟糕,真的没有理由经历这一切。

关于git - 我如何在本地创建 "clean up"分支,而不破坏其他人的一切?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096848/

相关文章:

git - 使用带有 Stack 的私有(private) git 存储库

ios - 如何对 Cocoapods 安装进行 nuke 并从 Github master 开始

git - 为什么 git (bash) 会在我的新文件中插入一堆废话?

tfs - 在两个现有分支之间插入一个新分支

javascript - 我如何在 Canvas 上创建 "Choose your Own Adventure game"?

GitHub 网络图表示 merge 后错误的第一个父级

Xcode 和 Git 在 MacOSX Mountain Lion 上的安装

从 PROD 合并到 HEAD 还是从 HEAD 合并到 PROD?

git - 使无法分支 merge [Lock for merge?]

windows - 如何批量分支if语句