从 Master 分支出来,但包括来自另一个未合并分支的更改
Branch off Master but include changes from another unmerged branch
我有一个尚未合并的功能分支。我需要从 Master
创建一个新分支,但我希望它还包括我尚未合并的功能分支的更改。
我不想从我的功能分支中分支出来,我该怎么做?
master
~ branch A (not yet merged)
~ branch B (new branch which includes changes from branch A)
我在想我也许应该从 master 分支然后将我的新分支重新设置为分支 A?
当我最终在分支 A 之后合并分支 B 时,更改应该只显示分支 B 的更改,因为分支 A 已经合并 - 这是否正确?
无需特殊准备。你可以
# master is checked out
git checkout -b B
git merge A
或
# A is checked out
git checkout -b B
git merge master
在这两种情况下,您的新分支 B 都以 "branched off master" 结束,并且具有来自 A 的新更改。在 A 合并回 master 后,master
和 B
之间的差异将不再将 A 的内容显示为不同,因为这些提交现在在两个分支的历史记录中。 B 的后续合并只会 include/add 那些为该新功能发生的提交。
完整示例,从一个空目录开始:
# 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
我有一个尚未合并的功能分支。我需要从 Master
创建一个新分支,但我希望它还包括我尚未合并的功能分支的更改。
我不想从我的功能分支中分支出来,我该怎么做?
master
~ branch A (not yet merged)
~ branch B (new branch which includes changes from branch A)
我在想我也许应该从 master 分支然后将我的新分支重新设置为分支 A?
当我最终在分支 A 之后合并分支 B 时,更改应该只显示分支 B 的更改,因为分支 A 已经合并 - 这是否正确?
无需特殊准备。你可以
# master is checked out
git checkout -b B
git merge A
或
# A is checked out
git checkout -b B
git merge master
在这两种情况下,您的新分支 B 都以 "branched off master" 结束,并且具有来自 A 的新更改。在 A 合并回 master 后,master
和 B
之间的差异将不再将 A 的内容显示为不同,因为这些提交现在在两个分支的历史记录中。 B 的后续合并只会 include/add 那些为该新功能发生的提交。
完整示例,从一个空目录开始:
# 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