为了账号安全,请及时绑定邮箱和手机立即绑定

如何选择一系列提交并合并到另一个分支?

如何选择一系列提交并合并到另一个分支?

Git
饮歌长啸 2019-06-05 14:44:39
如何选择一系列提交并合并到另一个分支?我有以下存储库布局:总支部(生产)整合工作我想要实现的是从工作分支中选择一系列提交,并将其合并到集成分支中。我对git非常陌生,我不知道如何做到这一点(在一个操作中选择提交范围,而不是合并),而不是在不破坏存储库的情况下。对此有什么建议或想法吗?谢谢!
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

rebase --onto如果在集成分支的顶部重放给定的提交范围,将更好,如查尔斯·贝利.

(此外,请查找“这里是如何基于一个分支将主题分支移植到另一个分支”的git重基手册页的实际例子git rebase --onto)

如果您当前的分支是集成的,那么:

# Checkout a new temporary branch at the current locationgit checkout -b tmp# Move the integration branch to the head of the new patchsetgit
 branch -f integration last_SHA-1_of_working_branch_range# Rebase the patchset onto tmp, the old location of integrationgit rebase --onto 
 tmp first_SHA-1_of_working_branch_range~1 integration

它将在以下几个方面重播所有内容:

  • 在父母之后

    first_SHA-1_of_working_branch_range

    (因此

    ~1

    ):你想要重播的第一次提交
  • 直至“

    integration

    “(指向要重播的最后一次提交,从

    working

    支部)

致“tmp“(指的是integration指过去)

如果其中一次提交被重播时有任何冲突:

  • 要么解决它,然后运行“

    git rebase --continue".

  • 或者跳过此修补程序,而是运行“

    git rebase --skip"

  • 或者用“

    git rebase --abort

    “(然后放回

    integration

    支线

    tmp

    支部)

在那之后rebase --ontointegration将返回到集成分支的最后一次提交(即“tmp“分支+所有重放提交)

摘樱桃或者rebase --onto,不要忘记它对随后的合并有影响,如在此描述.


纯“cherry-pick“并涉及以下内容:

如果您想使用修补程序的方法,那么“git格式-修补程序\git是”和“git樱桃”是您的选择。
目前,git cherry-pick只接受一次提交,但如果要选择范围B贯通D那就是B^..D用吉特林戈语,所以

git rev-list --reverse --topo-order B^..D | while read rev 
do 
  git cherry-pick $rev || break done

但是无论如何,当您需要“重放”一系列提交时,“重播”一词应该促使您使用rebase“Git的特征。


查看完整回答
反对 回复 2019-06-05
?
跃然一笑

TA贡献1826条经验 获得超6个赞

从git v1.7.2樱桃采摘可以接受一系列提交:

git cherry-pick学会选择一系列的提交(例如:cherry-pick A..Bcherry-pick --stdin),也是git revert这些不支持更好的测序控制。rebase [-i]尽管如此。


查看完整回答
反对 回复 2019-06-05
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

你确定你不想真正合并这些分支吗?如果工作分支有一些您不想要的最近提交,您可以创建一个新的分支,在您想要的点上有一个头。

现在,如果您确实想要选择一系列提交,不管出于什么原因,一个优雅的方法就是只需拉动一个修补程序集并将其应用于您的新集成分支:

git format-patch A..B
git checkout integration
git am *.patch

这基本上就是git-rebase到底在做什么,但不需要玩游戏。你可以添加--3waygit-am如果你需要合并的话。请确保在执行此操作的目录中已经没有其他*.修补程序文件,如果您按照说明逐字操作.


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 935 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信