使用Git将提交移动到另一个分支

时间:2014-06-04 15:30:49

标签: git version-control branch branching-and-merging atlassian-sourcetree

我需要将变更集2-5设置在红色(最左边)分支而不是蓝色分支上。由于2-5基于"基于"反正1。我需要樱桃挑选吗?我目前正在使用Source Tree。

enter image description here

提交2-5必须仅在拉取请求后出现在蓝色分支上。意思是他们必须出现在红色分支上,获得批准,然后才合并为蓝色分支。

1 个答案:

答案 0 :(得分:3)

然后合并分支。 Git将执行快进合并(不会创建合并提交),因为红色分支上没有提交,结果是提交2到5是"在红色分支上#34; - 实际上,分支指针将移动到指向5,这似乎是你所追求的。

$ git checkout <red branch>
$ git merge <blue branch>

# or

$ git merge <commit id of 5>

RE:您的更新

看起来你想要&#34;移动&#34;提交到红色分支。你不能这样做,这不是Git的工作方式。你永远不能移动&#34;提交,你只移动分支指针。

如果你想让提交出现&#34;只有&#34;在红色分支上,你基本上只需要交换分支指针。您可以通过一系列git reset --hard来执行此操作,或者将蓝色分支合并到上面的红色分支中,然后将蓝色分支重置为提交2之前的点。您必须选择哪个点,因为提交2是合并提交。您可以将其重置为origin/blue-branch状态。

所以,如上所述,(将蓝色合并为红色)然后......

$ git checkout <blue branch>
$ git reset --hard <commit id of red commit>

# OR

$ git reset --hard <commit id of purple commit>

# OR

$ git reset --hard <origin/blue branch>