Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Git在两个分支中推送提交_Git_Branch_Push - Fatal编程技术网

使用Git在两个分支中推送提交

使用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推送两个分支 为什么在两个分

如何在两个分支中推送提交

我不能使用“gitpush”,因为它会推送到三个分支,我只想在其中两个分支中提交

我在分支B中尝试了一个“git merge HEAD--commit id from branch a--”,但是它从分支a获取了所有内容并与分支B合并。我只希望最后一次提交,而不是其他所有内容与分支B合并

有人知道怎么做吗?

简短回答 您可以使用命令将已经存在的commit应用到另一个分支,然后使用
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回流中看到它