【问题标题】:Keeping local branch work after Git Pull Request在 Git 拉取请求之后保持本地分支工作
【发布时间】:2011-03-09 12:17:50
【问题描述】:

我对 Git 相当陌生,最近从 GitHub 分叉了一个项目,进行了一些更改并向 GutHub 提交了一个拉取请求。

我所做的更改现在正在我正在开发的应用程序中使用,因此我需要在本地拥有这些更改才能运行我的应用程序。

但是,我确实想通过分叉另一个分支并在那里进行更改,然后再进行另一个拉取请求等等来继续向 GitHub 项目添加功能/更改。

有没有办法保留我在第一个分支中所做的更改(在项目开发人员将它们合并到主分支之前和如果它们合并到主分支之前)并继续向第二个分支添加功能,然后执行第二个拉取请求,这将仅包含用于拉取请求的第二个分叉中的更改。然后,该过程将在第三次和后续分叉中重复。

但是在本地,我将拥有从第一次分叉开始的所有更改,以便我可以继续针对我所做的所有最新更改测试我的应用程序。

【问题讨论】:

    标签: git github git-branch


    【解决方案1】:

    如果你有两个分支,让我们称它们为first-fork(你已经提交了拉取请求)和second-fork(其中有一些其他的东西,无论是否提交上游),你想要什么要做的是保持它们的区别,以缓解上游的拉动。我要做的是拥有第三个本地分支,比如build,作为您正在构建和运行的软件版本,您可以将first-fork 合并到其中,然后像您一样反复合并second-fork添加您想尝试的新事物。

    【讨论】:

    • 似乎是最合乎逻辑的解决方案,刚刚尝试了您的建议,效果很好!只需要记住在编码时在分支之间切换:)
    • @Matt Enright 我同意这听起来是一个合理的策略,尽管它是 深奥/复杂 策略(对于绝大多数 git 用户而言)。你介意用一些命令来详细说明这个流程吗?
    • 当然:git checkout -b build upstream/master; git merge first-fork; while : do git checkout second-fork; vi **/* && git commit -a; git checkout build; git merge second-fork; make test && git reset --hard HEAD^; done; 等等。您可以从 master 重做合并,如果它取得进展并且您想对其进行测试,或者如果您进一步修改第一次分叉的补丁等。这里的关键是 build 是一个一次性分支,所以你在合并其他提议的更改之前,可以尽可能多地回退它以模拟包含masterfirst-fork 的状态以及您想要的任何其他内容。
    猜你喜欢
    • 2013-08-04
    • 2016-03-31
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多