【问题标题】:Merge downstream commits in GitHub (not waiting for a pull request)在 GitHub 中合并下游提交(不等待拉取请求)
【发布时间】:2020-12-09 03:02:16
【问题描述】:

我的一个 GitHub 存储库被分叉,(下游)开发人员做出了我想立即合并的更改(这是我的存储库当前状态的一次提交)。说开发人员还没有提出拉取请求。我在想可能有一种方法可以从他的下游分支中的提交中创建一个 PR。

  • 是的,我可以联系 forker 以发起拉取请求(一种拉取请求请求),
  • 我可以克隆甚至 fork 分叉,然后花时间将更改应用回我的 repo

但不知道有没有更好的办法?

【问题讨论】:

    标签: git github fork pull-request


    【解决方案1】:

    假设您在自己的计算机(我将其称为“您的笔记本电脑”)上拥有 GitHub 存储库的克隆,只需将您的 GitHub 存储库的 他们的 分支添加到您的笔记本电脑 Git:

    git remote add xyzzy https://github.com/their/fork.git
    

    xyzzy 是这个下游的可怕名称。 (选择更好的名称,如downstreamfred,并在后续命令中替换xyzzy。)

    现在你可以运行了:

    git fetch xyzzy
    

    您现在在笔记本电脑 Git 中拥有xyzzy/* 远程跟踪名称,对应于它们的下游分支的分支名称。你可以合并任何你喜欢的提交,然后像往常一样git push origin

    【讨论】:

    • 当我想切换到xyzzy/master 分支查看它时(VSCode 是git checkout -q --track xyzzy/master)有fatal: A branch named 'master' already exists.。没有足够的 git 大师知道如何进行。您可以在答案中提供任何提示以使其变得容易吗?
    • @Fuhrmanator: git checkout --track xyzzy/whatever 尝试创建一个名为whatever(本地)分支。在这种情况下,它试图创建一个名为master 的新分支。您不能有两个相同名称的不同分支名称:您必须用其他名称调用这些分支中的至少一个。为每个本地分支选择您想要的名称:一个是master,一个是其他名称。 (或者两者都可以是其他东西,只要它是两个不同的东西-else-s。)
    • 这有一个不好的副作用:至少你的一个分支,我们暂时称它为bob,将有origin/masterxyzzy/master 作为其上游。也就是说,将不再有从bob 到“其他人的master”的明显方式。这个特定问题的一个解决方案是:不要费心创建本地分支名称。根本不需要使用 branch 名称除非您打算创建新的提交并且需要一种好的方法来跟踪它们。
    • 这里要意识到的是,Git 本身并不真正关心分支名称。 Git 关心的是commits。任何名称(例如origin/masterxyzzy/master 之类的远程跟踪名称)都足以按名称查找提交。如果您不需要使用 branch 名称,请不要使用一个。只需使用远程跟踪名称。
    • 说了这么多,如果你想创建自己的分支bob 并以xyzzy/master 作为其上游,请使用:git branch --track bob xyzzy/mastergit checkout --track -b bob xyzzy/master 或许多其他更难键入的分支在变体中(但是当这两个更容易输入时,为什么还要麻烦呢?)。
    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2011-05-05
    • 1970-01-01
    • 2020-02-12
    • 2021-08-12
    相关资源
    最近更新 更多