繁体   English   中英

git-将特定提交从开发移到功能分支

[英]git - move specific commits from develop to feature branch

因此,在我们的git信息库中,一些提交(而不是现在的最新提交)已提交到我们的开发分支,而这些分支本应该在功能分支中。 他们应该做的分支位于线下。 提交最终是针对尚未完成的功能,因此,现在我们确实需要将它们从developer分支中删除,以便我们可以回到拥有正常运行的development分支的位置。

有没有一种方法可以将特定提交从developer分支移到Feature分支的开始? 并非100%熟悉git,因此如果需要任何其他信息,请询问。

尝试樱桃挑。 使用cherry pick,您可以将另一个分支的选定提交提交到当前分支。

https://git-scm.com/docs/git-cherry-pick

首先,通常的免责声明:您要执行的操作(即从分支中删除提交)意味着重写历史记录 ,因此请谨慎操作。

假设您的历史记录如下所示:

A--B--C--D--E develop
         \
          F--G feature

而要“动” 1BCdevelopfeature ,你可以做到这一点的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质数 ”)是新提交 ,它们与BC包含相同的更改,但是由于它们具有不同的父C而具有不同的提交ID。

在这一点上,您可以通过说出从develop分支中删除BC

git rebase --onto A C
# This means rebase the current branch on top of commit A instead of C

这将导致在develop不再可以到达提交BC

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM