【问题标题】:How to get Pull request changes to local editor?如何获取对本地编辑器的拉取请求更改?
【发布时间】:2021-07-28 09:04:54
【问题描述】:

我从 master 创建了一个分支:test_branch。对 test_branch 中的代码进行了一些更改并提交并创建了一个拉取请求。

现在我有一个这种格式的拉取请求:https://something.com/something/abcd/pull/873/files

但在我的编辑器中,我看不到我的更改。 那么我如何才能将 pull request 的这些更改发送给我的本地编辑器?

PS:在那之后,我在本地编辑器上做了很多提交(因为几天后我正在处理那个拉取请求)。我忘了在我的本地编辑器上 shash,所以在我的本地编辑器中我什么都没有,我只有这个拉取请求,我怎样才能将拉取请求的更改发送给我的本地编辑器?

【问题讨论】:

  • “我如何才能将拉取请求的更改发送给我的本地编辑” 不清楚这些词的含义。要在本地查看或运行拉取请求的内容,请获取拉取请求分支并检查所需的提交。

标签: git github pull-request


【解决方案1】:

拉取请求是一个人向另一个人提出的请求(因此是名称的“请求”部分)。暂时假设你是第二个人。该请求要求您从其他 Git 存储库获取 (git fetch) 然后 git merge (fetch+merge = pull,因此名称名称的“拉”部分) 一些提交。也就是说,发出请求的人要求可以执行请求的人运行git pull,并给出请求者的存储库的名称或 URL。

GitHub 拉取请求是同样的基本思想,添加了许多 GitHub 特定的脚手架,以使作为 GitHub 用户的您更容易完成所涉及的各个步骤。 “原始”Git 要求您自己完成这些步骤,而不是单击一个绿色的大为我做事,所以我不必考虑 按钮。 GitHub 风格的优点是不用思考;缺点是后来很多人不考虑

如果您确实考虑一下它是如何工作的,最终会变得很明显:您根本不会获得提交的更改。你要么得到提交,要么你没有得到提交。这就是你可以通过提交来做的事情:你可以使用git fetch 来获取它。一旦你拥有它,你就可以用它做更多的事情。

如果你已经拥有提交——因为你是在发送到你自己的 GitHub存储库之前提交的,例如,在发出拉取请求之前——你不需要需要得到它。只需使用本地 Git 来处理它。如果它在其他一些 GitHub 存储库中,您将需要:

  • 添加一个 remote 以便为 URL 命名,然后
  • 使用git fetch(可能还有其他Git 命令)来获取(或者做一些事情)提交。1

当 GitHub 拉取请求位于您可以像这样阅读的某个存储库中时,为该存储库选择一个名称(这里的常见远程名称是 upstream,但名称取决于您)并运行:

git remote add upstream <insert correct URL here>

(如果你愿意,可以从 upstream 更改名称)。然后,使用git fetch。这需要一些棘手的东西,因为 GitHub 将拉取请求隐藏在自己的系统后面:

git fetch upstream +refs/pull/<number>/head:refs/heads/pr<number>

例如,将在您自己的存储库中创建或强制更新一个名为 pr<em>number</em>分支,该分支来自其存储库中具有给定编号的拉取请求。

您现在在名为 pr<em>number</em> 的分支中拥有提交,并且可以像往常一样使用它们。

同样,如果提出了拉取请求,你已经有提交,可能在一个分支中,你不需要做所有这些。只需与他们合作。


1可以使用git pull 组合这些步骤,并使用原始 URL 而不是远程 URL。在您非常熟悉 git pull 运行的所有步骤之前,我建议您避免这样做。

【讨论】:

  • 通过 PR 编号获取 PR 提交的技巧很聪明,但实际上它通常不是不必要的吗? GitHub 会告诉你分支的名称。也许在分叉回购的情况下更必要?
  • @matt:是的,对于分叉的存储库,您需要使用 refs/pull/&lt;number&gt;/head 技巧。如果他们的自动合并有效,您还可以获得refs/pull/&lt;number&gt;/merge;如果该 ref 不存在,则它们的自动合并失败(合并冲突)。不过,我从来没有打扰过他们的自动合并提交本身。
【解决方案2】:

假设您的拉取请求被接受。 由于修改后的分支是 test_branch。将本地编辑器上的分支更改为 test_branch 并拉取。然后所有的变化都是可见的。

【讨论】:

  • 我忘了在我的本地编辑器上显示它,所以在我的本地编辑器中我什么都没有,我只有这个拉取请求,我怎样才能将拉取请求的更改发送给我的本地编辑器?
  • @AnkitKumar 试试这些:1. git pull origin test_branch 2. 结帐到 test_branch 分支,然后 git pull
  • @AnkitKumar 首先检查拉取请求是否被接受
  • 打开拉取请求 url 并点击按钮 Open with 然后点击 Github CLI 复制该 url gh _ _ _ 在终端中运行希望有所帮助。
猜你喜欢
  • 2018-09-24
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
相关资源
最近更新 更多