结帐到另一个现有分支,其中包含来自 develop 的更改
Checkout to another existing branch with changes from develop
我有一个简单的场景。
所以,我有 3 个分支
发展
feature_1
feature_2
我已经在 /feature_1 提交上更改了一些内容并将其合并到 develop
现在我想更改 feature_2 分支中的某些内容,但它不是最新的,开发是提前提交的一些内容。我希望 feature_2 分支是 develop 分支的副本。
我想做这样的事情
git checkout -b new_branch
但是对于现有的分支,我不想创建一个新的分支。
那么我应该怎么办,因为我已经阅读了很多相关内容,我应该结帐到 feature_2 并退出开发吗?
变基?
合并?
请给我最好的解决方案
如果 feature_2 不受 develop 上所做更改的影响,那么我将完成 feature_2 然后合并 develop.
如果 feature_2 需要在 develop 上进行更改,那么如果 feature_2 尚未发布(您是唯一从事此工作的人),那么我会将其重新设置为 develop,因为它创建了更清晰的历史记录。如果你不是唯一一个致力于 feature_2 的人,那么我会将 develop 合并到 feature_2,这样其他工作的人 feature_2 就不会改变他们的历史记录。
在 feature_2
分支上执行命令 git pull origin develop --rebase
将得到你需要的东西。
假设现在的提交历史如下:
E-----F-----G feature_1
/ \
…---A---…---B---C---D develop
\
H---I feature_2
在 feature_2
分支上执行 git pull origin develop --rebase
后,提交历史将是:
E-----F-----G feature_1
/ \
…---A---…---B---C---D develop
\
H'---I' feature_2
如您所见,feature_2
分支将在 develop
分支的最新提交 D
上。
此外,如果您还没有在 feature_2
分支上提交更改(在 feature_2
分支上没有提交 H
和 I
),如下图:
E-----F-----G feature_1
/ \
…---A---…---B---C---D develop
|
feature_2
除了方法git pull origin develop --rebase
,你可以使用下面的命令重置develop
分支顶部的feature_2
分支:
git checkout develop
git checkout -B feature_2
注意:git checkout
命令的-B
选项将在分支名称不存在的情况下创建一个新分支。而如果分支名称存在,它将重置现有分支。
我有一个简单的场景。
所以,我有 3 个分支
发展
feature_1
feature_2
我已经在 /feature_1 提交上更改了一些内容并将其合并到 develop
现在我想更改 feature_2 分支中的某些内容,但它不是最新的,开发是提前提交的一些内容。我希望 feature_2 分支是 develop 分支的副本。
我想做这样的事情
git checkout -b new_branch
但是对于现有的分支,我不想创建一个新的分支。
那么我应该怎么办,因为我已经阅读了很多相关内容,我应该结帐到 feature_2 并退出开发吗?
变基?
合并?
请给我最好的解决方案
如果 feature_2 不受 develop 上所做更改的影响,那么我将完成 feature_2 然后合并 develop.
如果 feature_2 需要在 develop 上进行更改,那么如果 feature_2 尚未发布(您是唯一从事此工作的人),那么我会将其重新设置为 develop,因为它创建了更清晰的历史记录。如果你不是唯一一个致力于 feature_2 的人,那么我会将 develop 合并到 feature_2,这样其他工作的人 feature_2 就不会改变他们的历史记录。
在 feature_2
分支上执行命令 git pull origin develop --rebase
将得到你需要的东西。
假设现在的提交历史如下:
E-----F-----G feature_1
/ \
…---A---…---B---C---D develop
\
H---I feature_2
在 feature_2
分支上执行 git pull origin develop --rebase
后,提交历史将是:
E-----F-----G feature_1
/ \
…---A---…---B---C---D develop
\
H'---I' feature_2
如您所见,feature_2
分支将在 develop
分支的最新提交 D
上。
此外,如果您还没有在 feature_2
分支上提交更改(在 feature_2
分支上没有提交 H
和 I
),如下图:
E-----F-----G feature_1
/ \
…---A---…---B---C---D develop
|
feature_2
除了方法git pull origin develop --rebase
,你可以使用下面的命令重置develop
分支顶部的feature_2
分支:
git checkout develop
git checkout -B feature_2
注意:git checkout
命令的-B
选项将在分支名称不存在的情况下创建一个新分支。而如果分支名称存在,它将重置现有分支。