【问题标题】:How do I merge pull requests into a legacy branch?如何将拉取请求合并到旧分支中?
【发布时间】:2014-01-15 01:54:29
【问题描述】:

所以我创建了一个分支来保存它作为我项目当前状态的快照。我称之为“v1”。

然后我重构了一些代码并提交到 master 分支。所以现在我掌握了最新最好的大师。

我的问题是:如果有人向 master 提交 pull request,我该如何维护旧分支?有没有一种简单的方法可以将拉取请求合并到两个分支?

我期待的是:如果文件发生了很大变化,那么就会出现冲突。但如果不是,那么它只会合并 PR 引入的更改,即使 PR 的基础在我的旧版“v1”分支之前也是如此。

【问题讨论】:

    标签: git merge branch legacy


    【解决方案1】:
    git fetch <remote>
    git merge <remote>/<ref>
    

    其中remote 是发起拉取请求的远程分支的名称,ref 是请求拉取的提交(或分支)的标识符。因此,如果您将主存储库作为名为@9​​87654325@ 的远程存储库,并且该存储库具有基于5d4434e 的拉取请求(例如repository's pull request)。你会跑:

    git fetch upstream
    git merge upstream/5d4434e
    

    这将合并该提交和本地存储库中缺少的所有历史记录。如果您只想合并该提交的更改而不是所有历史记录,您可能需要git cherry-pick upstream/5d4434e

    【讨论】:

    • 所以 git merge 对我不起作用,因为我不希望我的重构更改转到遗留分支。我想我必须为拉取请求中的每个提交使用 git cherry-pick。
    • 您可能不得不挑选拉取请求中的每个提交(希望不会太多)..因为我不认为拉取请求的实际信息存储在存储库。
    • 我想这会起作用: git cherry-pick -m 1
    • 好发现@Renato,不知道-m 存在。这应该可以节省一些时间。
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多