如果我从遥控器上的如下结构开始:
A-B-C-D-F-G master
\
E-H-I branch
我克隆分支并进行更改'J'(&提交并推送到远程分支)我怎样才能将'J'合并到主控而不降低'H'和'I'?是否可以仅通过推送更改“J”来完成,或者我是否需要切换到本地回购跟踪主机并合并本地“J”更改并将其推送到主机?
A-B-C-D-F-G-J master
\
E-H-I-J branch
如果我从遥控器上的如下结构开始:
A-B-C-D-F-G master
\
E-H-I branch
我克隆分支并进行更改'J'(&提交并推送到远程分支)我怎样才能将'J'合并到主控而不降低'H'和'I'?是否可以仅通过推送更改“J”来完成,或者我是否需要切换到本地回购跟踪主机并合并本地“J”更改并将其推送到主机?
A-B-C-D-F-G-J master
\
E-H-I-J branch
创造一个反映现实的历史,从而为自己避免下游的潜在麻烦,
git checkout -b Jbranch B
git cherry-pick J
git checkout -B branch I
git merge Jbranch
git checkout -B master G
git merge Jbranch
git branch -d Jbranch
生产
A..B..C..D..F..G..J'' master
| /
|\........J'.+
| \
\....E..H..I..J branch
新旧“分支”提示中的“J”提交树将是相同的,只是这次具有明确的历史记录。
您可以选择更改 J。Cherry-picking 仅将特定提交复制到分支。
$ git checkout master
$ git cherry-pick J
请注意,提交 J 现在将被复制(它将存在于每个分支上)。