使用Git在两个分支中推送提交
如何在两个分支中推送提交 我不能使用“gitpush”,因为它会推送到三个分支,我只想在其中两个分支中提交 我在分支B中尝试了一个“git merge HEAD--commit id from branch a--”,但是它从分支a获取了所有内容并与分支B合并。我只希望最后一次提交,而不是其他所有内容与分支B合并 有人知道怎么做吗?简短回答 您可以使用命令将已经存在的commit应用到另一个分支,然后使用使用Git在两个分支中推送提交,git,branch,push,Git,Branch,Push,如何在两个分支中推送提交 我不能使用“gitpush”,因为它会推送到三个分支,我只想在其中两个分支中提交 我在分支B中尝试了一个“git merge HEAD--commit id from branch a--”,但是它从分支a获取了所有内容并与分支B合并。我只希望最后一次提交,而不是其他所有内容与分支B合并 有人知道怎么做吗?简短回答 您可以使用命令将已经存在的commit应用到另一个分支,然后使用git push origin branchA branchB推送两个分支 为什么在两个分
git push origin branchA branchB
推送两个分支
为什么在两个分支中推送提交可能有用 假设您有一个具有以下结构的存储库:
A--B--C--D ← master ← HEAD
\--E ← v1-release
A--B--C--D--F ← master ← HEAD
\--E--G ← v1-release
经过一些开发(提交A
,B
,C
)项目发布,并创建了v1发行版
分支(这样v1可以通过错误修复得到支持,下一个版本可以在master
中开发)。提交E
用于指定版本信息(添加了发行说明等)。提交D
引入了新功能,该功能计划在下一版本中使用,不应出现在v1版本中
现在,如果在v1发行版
中发现一个bug,则必须在两个分支中修复它,以便用户可以继续使用v1,而不会在下一个版本中出现
在master
中修复错误后,存储库应如下所示:
A--B--C--D--F ← master ← HEAD
\--E ← v1-release
A--B--C--D--F ← master
\--E--G ← v1-release ← HEAD
现在,必须将带有错误修复的提交F
应用于v1发行版
分支
如何真正做到这一点
无法准确复制提交(因为提交是目录保存状态),但您可以将在提交中所做的更改应用于另一个提交
cherry pick
命令正是这样做的。它将指定提交所做的更改应用于当前分支,创建新提交:
git checkout v1-release
git cherry-pick F
在此之后,存储库应如下所示:
A--B--C--D--F ← master ← HEAD
\--E ← v1-release
A--B--C--D--F ← master
\--E--G ← v1-release ← HEAD
提交G
引入与F
相同的更改
您可能需要解决冲突(与合并后完全相同)
错误消息
以前的樱桃树现在已经空了
表示提交所做的更改已存在于当前分支中。您可能忘记签出正确的分支
如果出现错误或冲突,可以使用git cherry pick--abort来中止cherry pick
最后,您可以返回到master
分支,并将两个分支推送到远程存储库:
git checkout master
git push origin master v1-release
最终存储库结构:
A--B--C--D ← master ← HEAD
\--E ← v1-release
A--B--C--D--F ← master ← HEAD
\--E--G ← v1-release
试试这个:
git push origin <commitId>:<brancnName_1>
git push origin <commitId>:<brancnName_2>
git推送原点:
git推送源:
它在我这边起作用。下次,在不同的分支上进行提交,从分支a和B的共同祖先开始。这样,您可以将其合并到这两个分支中,而不会在历史记录中出现重复提交。将本地分支推送到两个远程分支如何?有没有一个简单的方法可以做到这一点?cherry pick命令的示例将有助于说明在上下文中的使用,并避免需要消化一页文档。我们中的一些人不能像其他人那样轻松地进行RTFM:)这很奇怪,我这么做了,我的提交从所有日志中消失了。我只能在git回流中看到它