给出以下分支结构:
*----*-----*
master \
*--*---*------*-*---*
A \
*----*
hotfix
是否可以将hotfix
中所做的更改仅合并到master
中,而无需引入任何更改在Feature A
?
在Feature A
的开发过程中,file_1已更改。在hotfix
期间,file_1和file_2已更改。
我希望将hotfix
中引入的逐行更改合并到master
中。我不想要的是hotfix
中覆盖master
中文件的确切文件,因为它会包含Feature A
更改。
我正在开发我们的开发服务器。我有一个主分支,它(几乎)是实时服务器的精确副本。当我想实现新功能时,我创建了一个主分支,进行更改并上传到开发服务器。一旦我对更改感到满意,我就将它们合并到master中并将更改推送到实时服务器。
我一直在研究Feature A
,这需要很长时间才能实现并影响许多文件。在完成Feature A
之前,我想要处理hotfix
。我可以签出master
并从那里为我的修补程序分支,但是开发服务器上的所有文件当前都包含Feature A
的代码。在Feature A
工作期间,我不希望hotfix
停止开发dev。所以我已经分了Feature A
。
我现在已经完成了hotfix
,我希望将其合并为主人。但是,我不希望任何 Feature A
代码进入master
。
如果没有合并冲突,这可能吗?
答案 0 :(得分:1)
做git rebase --onto master A hotfix
。
这将修改修补程序中的提交,但不会将分支A中的提交重新绑定到主分支的提示上。之后,您可以像往常一样将它们合并到主分支中。
答案 1 :(得分:1)
由于分支实际上只是命名提交,因此您的历史记录实际上如下所示:(最新提交)
* 9999 [hotfix]
|
* 8888
|
* 7777
|
* 6666 [A]
|
* 5555
|
* 4444
|
* 3333 [master]
|
* 2222
|
V
$ git checkout hotfix
首先,我们保存指向原始hotfix
的指针,然后将其命名为A-hotfix
:
$ git branch A-hotfix
现在,将所有提交从A
提交到hotfix
,然后将其重播到master
点的提交中:
$ git rebase --onto master A hotfix