结帐到另一个现有分支,其中包含develop的更改

时间:2017-11-26 20:35:57

标签: git version-control branch rebase

我有一个简单的场景。

所以,我有3个分支

  • 开发

  • feature_1

  • feature_2

我更改了/ feature_1已提交的内容并将其合并为开发

现在我想在feature_2分支中更改某些内容,但它不是最新的,开发是一些提交。我希望feature_2分支是开发分支的副本。

我想做这样的事情

git checkout -b new_branch

但是对于现有的分支机构,我不想创建一个新分支。

那么我应该怎么做,因为我已经阅读了很多关于它的信息,我应该检查feature_2并从开发中获取?

变基

合并?

请给我最好的解决方案

2 个答案:

答案 0 :(得分:1)

如果 feature_2 不受开发所做更改的影响,那么我只需完成 feature_2 ,然后与合并开发

如果 feature_2 需要对开发进行更改,那么如果 feature_2 尚未发布(您的唯一工作人员)它然后我会在开发上重新定义它,因为它创造了一个更清晰的历史。如果您不是唯一一个处理 feature_2 的人,那么我会将开发合并到 feature_2 ,以便其他人工作 feature_2 不会更改其历史记录。

答案 1 :(得分:1)

git pull origin develop --rebase分支上执行命令 feature_2 将获得您所需的信息。

现在假设提交历史如下:

      E-----F-----G     feature_1
     /             \
…---A---…---B---C---D   develop
             \
              H---I     feature_2

git pull origin develop --rebase分支上执行feature_2后,提交历史记录将为:

      E-----F-----G     feature_1
     /             \
…---A---…---B---C---D   develop
                     \
                      H'---I'    feature_2

如您所见,feature_2分支将位于D分支的最新提交develop

此外,如果您未在feature_2分支上提交更改(H分支上没有提交Ifeature_2),如下图所示:

      E-----F-----G     feature_1
     /             \
…---A---…---B---C---D   develop
            |
        feature_2

git pull origin develop --rebase之外,您可以使用以下命令重置feature_2分支顶部的develop分支:

git checkout develop
git checkout -B feature_2

注意:如果分支名称不存在,-B命令的<{strong> git checkout选项将创建一个新分支。如果存在分支名称,它将重置现有分支。