关于git:如何将分支上的hotfix合并到master


How to merge hot fix on branch to master

本问题已经有最佳答案,请猛点这里访问。

如果我从遥控器上的如下结构开始:

1
2
3
A-B-C-D-F-G  master
   \
    E-H-I  branch

我克隆分支并更改"j"(提交并推送到远程分支),如何将"j"合并为master而不关闭"h"和"i"?是否可以通过按下更改"j"来完成,或者我是否需要切换到本地回购跟踪主机并合并本地"j"更改并将其推送到主机?

1
2
3
A-B-C-D-F-G-J  master
   \      
    E-H-I-J  branch


创造一个反映现实的历史,这样就可以省去下游的潜在麻烦,

1
2
3
4
5
6
7
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

生产

1
2
3
4
5
A..B..C..D..F..G..J''  master
   |             /
   |\........J'.+
   |             \
    \....E..H..I..J    branch

新旧"branch"技巧中的"j"commit树将完全相同,这一次只是显式的历史记录。


您可以选择cherry pick的更改j.cherry picking只复制一个特定的提交到分支。

1
2
$ git checkout master
$ git cherry-pick J

注意commit j现在将被复制(它将存在于每个分支上)。