[英]git - move specific commits from develop to feature branch
因此,在我们的git信息库中,一些提交(而不是现在的最新提交)已提交到我们的开发分支,而这些分支本应该在功能分支中。 他们应该做的分支位于线下。 提交最终是针对尚未完成的功能,因此,现在我们确实需要将它们从developer分支中删除,以便我们可以回到拥有正常运行的development分支的位置。
有没有一种方法可以将特定提交从developer分支移到Feature分支的开始? 并非100%熟悉git,因此如果需要任何其他信息,请询问。
尝试樱桃挑。 使用cherry pick,您可以将另一个分支的选定提交提交到当前分支。
首先,通常的免责声明:您要执行的操作(即从分支中删除提交)意味着重写历史记录 ,因此请谨慎操作。
假设您的历史记录如下所示:
A--B--C--D--E develop
\
F--G feature
而要“动” 1款B
和C
从develop
到feature
,你可以做到这一点的rebase --onto
命令:
git checkout develop
git rebase --onto feature A C
# This will apply commits B and C on top of the commit referenced by "feature"
现在,您的历史记录将如下所示:
A--B--C--D--E develop
\
F--G--B'--C' feature
请注意, B'
和C'
(读作“ B质数 ”和“ C质数 ”)是新提交 ,它们与B
和C
包含相同的更改,但是由于它们具有不同的父C
而具有不同的提交ID。
在这一点上,您可以通过说出从develop
分支中删除B
和C
:
git rebase --onto A C
# This means rebase the current branch on top of commit A instead of C
这将导致在develop
不再可以到达提交B
和C
:
A--D'--E' develop
A--B--C--D
\
F--G--B'--C' feature
但是,你仍然有feature
基于关闭旧的提交D
,目前已被改写为D'
。 为了解决这个问题,您需要再次在新的D'
之上重新设置feature
:
git checkout feature
git rebase --onto D' D
最终导致:
A--D'--E' develop
\
F--G--B'--C' feature
这可能是您想要的。
1)有关在Git中“移动”提交的含义,请参见@WilliamPursell的评论 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.