从Master分支,但包括另一个未合并分支的更改

时间:2020-05-26 08:38:36

标签: git rebase

我有一个尚未合并的功能分支。我需要从Master创建一个新分支,但我希望它也包括我尚未合并的功能分支的更改。

我不想分支我的功能分支,该怎么做?

master 
     ~ branch A (not yet merged)
     ~ branch B (new branch which includes changes from branch A)

我当时想我应该从master分支,然后根据分支A重新建立新分支?

当我最终合并分支B之后的分支B时,所做的更改应仅显示分支B的更改,因为分支A已被合并-这是正确的吗?

1 个答案:

答案 0 :(得分:1)

不需要特殊准备。您可以

# master is checked out
git checkout -b B
git merge A

# A is checked out
git checkout -b B
git merge master

在这两种情况下,您的新分支B最终都“脱离了主服务器”,并且对A进行了新的更改。在A合并回主服务器之后,masterB之间的差异将不再存在将A的内容显示为不同的内容,因为这些提交现在在两个分支的历史中。后来的B合并将仅包括/添加针对该新功能发生的提交。

完整示例,从一个空目录开始:

# 1st commit
git init
echo "foo" >> foo
git add -A
git commit -m "foo"

# Branch A
git checkout -b A
echo A >> A
git add -A
git commit -m "A"

# Branch B on top of A
git checkout -b B
echo B >> B
git add -A
git commit -m "B"

# More development on master
git checkout master
echo bar >> bar
git add -A
git commit -m "bar"

# First, B "contains" both A and B changes
git diff B

# But after merging A...
git merge A

# ...Diff B now only shows "remaining" changes
git diff B