我有一个简单的场景。
所以,我有3个分支
开发
feature_1
feature_2
我更改了/ feature_1已提交的内容并将其合并为开发
现在我想在feature_2分支中更改某些内容,但它不是最新的,开发是一些提交。我希望feature_2分支是开发分支的副本。
我想做这样的事情
git checkout -b new_branch
但是对于现有的分支机构,我不想创建一个新分支。
那么我应该怎么做,因为我已经阅读了很多关于它的信息,我应该检查feature_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
分支上没有提交I
和feature_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
选项将创建一个新分支。如果存在分支名称,它将重置现有分支。