如何在两个分支中推送提交?
我不能使用“git push”,因为它会推送到三个分支,我只想在其中两个分支中提交..
我已尝试在分支B中使用“git merge HEAD - 从分支A--委托id - ”然后它从分支A获取所有内容并与分支B合并。我只想要最后一次提交而不是其他所有内容与之合并B部门。
任何人都知道该怎么做?
答案 0 :(得分:97)
您可以使用cherry-pick
命令将现有提交应用于另一个分支,然后使用git push origin branchA branchB
推送两个分支。
假设您有一个具有此结构的存储库:
A--B--C--D ← master ← HEAD
\--E ← v1-release
经过一些开发(提交A
,B
,C
)项目已发布并创建了v1-release
分支(因此v1可以通过错误修正和下一版本支持可以在master
)中开发。提交E
用于指定版本信息(添加的发行说明等)。提交D
引入了新功能,该功能计划用于下一版本,不应出现在v1-release
中。
现在,如果在v1-release
中发现错误,则必须在两个分支中修复它,以便用户可以继续使用v1,并且它不会出现在下一个版本中。
修复master
中的错误后,存储库应如下所示:
A--B--C--D--F ← master ← HEAD
\--E ← v1-release
现在,必须将带有错误修正的F
提交应用于v1-release
分支。
无法准确复制提交(因为提交是目录保存状态),但您可以将提交中所做的更改应用于另一个提交。
cherry-pick
命令正是如此。它将指定提交所做的更改应用于当前分支,从而创建新提交:
git checkout v1-release
git cherry-pick F
在此之后,存储库应如下所示:
A--B--C--D--F ← master
\--E--G ← v1-release ← HEAD
提交G
引入了与F
相同的更改。
您可能必须解决冲突(与合并后完全相同)。
错误消息
之前的樱桃选择现在是空的......
表示由当前分支中已经存在由挑选提交所做的更改。你可能忘了检查正确的分支。
如果出现错误或冲突,可以使用git cherry-pick --abort
中止樱桃挑选。
最后,您可以返回master
分支并将两个分支推送到远程存储库:
git checkout master
git push origin master v1-release
最终的存储库结构:
A--B--C--D--F ← master ← HEAD
\--E--G ← v1-release
答案 1 :(得分:0)
试试这个:
git push origin <commitId>:<brancnName_1>
git push origin <commitId>:<brancnName_2>
它适用于我。