如何使用命令行git接受来自Github的拉取请求(PR)

问题描述 投票:0回答:4

问题

我收到了拉取请求,我想通过命令行批准它(即不使用浏览器登录 Github 并使用 GUI)。此 PR 对分支进行更改。

这是我尝试过的:

# First I go to the correct branch:
git checkout branch-to-be-modified

# Then I pull the changes made by the person who's contributing with the PR:
git pull https://github.com/my-contributor/code.git his-branch

# I then run `git status`, but it shows me nothing
git status
    # Outputs:
    # > On branch branch-to-be-modified
    # > nothing to commit, working tree clean 

问题

如何通过命令行接受Github拉取请求?

我还需要做什么,我应该

git push origin branch-to-be-modified
吗?

这应该很容易,但我找不到此信息。非常感谢您提供任何线索

git github command-line pull-request
4个回答
5
投票

您应该要求 GitHub 合并所述拉取请求:这将是“接受”它。

您可以使用官方 GitHub 客户端

gh
从命令行执行此操作

参见

gh pr merge

gh pr merge <number>

但这假设您首先登录(例如,使用像您的 PAT 这样的令牌:

gh auth login --with-token < mytoken.txt
)。
同样,从命令行,不直接使用 GitHub Web。


但是如果您想接受而不合并,即在有多个审稿人的情况下怎么办?

那么你需要使用

gh pr review
:

# approve the pull request of the current branch
gh pr review --approve 

这样,您就可以批准拉取请求,表明您对更改感到满意,同时仍然可以让其他审阅者在合并之前提供反馈。

而且,如果您是 GitHub 上团队项目的一部分,您可能设置了受保护的分支,在合并拉取请求之前需要进行多次审查。
在此类设置中,可以使用 GitHub CLI 完成单独批准,如上所示,并且拉取请求只有在收到所需数量的批准后才能合并。


4
投票

Pull Requests 是 Github 特有的功能。 Git 独立于 Github,您在 Git 中找不到任何 Github 特定的功能。如果您想在没有网络浏览器的情况下接受 PR,则需要寻找 Github 工具,例如 Github DesktopGithub CLI。这些都是围绕 Github REST APIGithub GraphQL API 的包装。


您可以通过像任何其他远程分支一样对待 PR 分支来手动合并 PR 分支,并且 PR 应该识别出其分支已被合并。然而,拉取请求不仅仅是合并,所以你可能想使用 Github 工具。

每个项目都可以以不同的方式合并其拉取请求:合并、压缩合并或变基。您必须模拟项目的合并策略。幸运的是,Git PR 会告诉您如何执行此操作:在“合并拉取请求”按钮旁边有一个“查看命令行说明”的链接。

单击该按钮并按照说明进行操作。

总体思路是:

获取远程分支。

    如果它位于分叉存储库中,您将需要将该分叉添加为远程。
    • 从远程分支创建本地分支。
  • 将 master 合并到本地分支。
  • 这将产生与将本地分支合并到 master 中相同的代码。
    • 测试分支。
  • 如果通过,则使用适当的合并方法将分支合并到主分支中。
  • 推你当地的master。
  • 有关更多信息,请阅读 Pro Git 中的
  • 使用遥控器
和 Github 上的

使用 Forks

您可以拥有 2 个遥控器,

0
投票

fork

。从那里您可以从 fork 分支合并到您的分支中。然后提交并推送到原点。

通常不建议盲目批准带有

0
投票
的 PR。因此,为了在 CLI 中查看源分支和目标分支 (

gh pr view

) 以及 PR (
gh pr diff
) 的差异并交互式确认 y/n,可以使用 
gh
 的此别名 (GitHub) CLI):
gh alias set --shell approve '!gh pr view $1 && gh pr diff $1 && echo "Approve PR? (y/N)" && read -r CONFIRM && [ "$CONFIRM" = "y" ] && gh pr review --approve $1' --clobber

终端使用:
gh approve <url here>

此处的文档页面:
https://cli.github.com/manual/gh_pr_review

© www.soinside.com 2019 - 2024. All rights reserved.