【问题标题】:git strategy to have a set of commits limited to a particular branch将一组提交限制在特定分支的 git 策略
【发布时间】:2010-03-30 11:19:59
【问题描述】:

我需要经常在 dev 和 master 之间合并。

我还有一个提交,我只需要向 dev 申请,以便在本地工作。

之前我只从 dev 合并到 master,所以我有一个分支 production_changes,其中包含 dev 特殊提交的“撤消提交”。从主人那里,我合并了这个。以前工作正常。

现在每次我从 dev 合并到 master 时,反之亦然,我不得不一次又一次地挑选并应用相同的提交 :(。这太丑了。

我可以采用什么策略,以便在 2 个分支之间无缝合并,但仅在其中一个分支上保留一些更改?

【问题讨论】:

    标签: git version-control


    【解决方案1】:

    我建议使用 merge driver(在 .gitattributes 文件中的合并指令中声明的脚本),以防止某些文件受到给定提交的影响。
    (例如,如果不能修改某些文件,则该驱动程序将像 "keep mine" merge 一样简单。这已用于 merge only specific directories 的示例,或用于跟踪每个分支的 config files are managed 的方式。)

    OP 补充说:

    但我更多的是寻找一个聪明的解决方案,如果存在的话,比如“创建一个只有撤消提交的分支并将其应用到 master,在 dev 上伪造它”

    聪明的解决方案?...
    好吧,我可以建议git rerere(重用记录的冲突合并解决方案:如果您合并到开发触发冲突,并且如果该冲突的解决方案是您有效地取消了该合并,您可以记录该解决方案,以便自动拥有它在下一次合并期间重复。

    有关此命令的更多信息,请参阅Scott ChaconRerere Your Boat...

    【讨论】:

    • 应该可以,但我正在寻找一个聪明的解决方案,如果存在的话,比如“创建一个只有撤消提交的分支并将其应用于 master,在 dev 上伪造它”
    • @becomingGuru:刚刚用git rerere 完成了我的回答,以防万一。
    【解决方案2】:

    对 git 撒谎:在一个单独的分支中创建差异,该分支植根于你的“开发”分支的分支点。然后将其“合并”到 master 中而不实际更改 master:类似于 git merge -s ours devfix-branch (您在 master 上执行此操作)

    然后回到dev并正常合并:git merge devfix-branch。现在devmaster 都会认为他们已经有了devfix,你可以继续合并到master。

    留给读者作为练习,看看这是否真的有效,或者是否可以发挥作用。

    【讨论】:

    • 太棒了!谢谢!下次我想做这样的事情时,这就是我要使用的。目前,我通过使用一些未签入的文件来处理更改,以便无缝合并!
    【解决方案3】:

    我会在 dev repo 中使用本地分支(即从未被推送到任何地方)来执行此操作,每当我从 master 中拉出时,我都会重新定位到 dev 分支的顶部。不是很天衣无缝,但我觉得比摘樱桃好一点。

    【讨论】:

    • 即使你 rebase 到最新的 master,有时你也需要在这个 commit 进来时合并 master。
    猜你喜欢
    • 1970-01-01
    • 2014-07-13
    • 2017-10-17
    • 1970-01-01
    • 2011-07-06
    • 2017-02-01
    • 2011-09-16
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多