从主分支分支但包含另一个未合并分支的更改

6

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

我不想从我的功能分支创建分支,该如何操作?

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

我在考虑我是否应该从主分支创建一个新的分支,然后将我的新分支与A分支进行rebase操作?

当我在A分支之后合并B分支时,只有B分支所做的更改应该显示出来,因为A分支已经被合并了,这样是正确的吗?


2
“我不想从我的特性分支中分离出来”,但你描述了这个确切的需求。为什么你不想从A分支中分离出来呢? - Romain Valeri
1个回答

6

无需特别准备。您可以

# 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接