如何使用新的 Github 命令行界面创建一个 Pull Request(PR),并将其发送到远程仓库而不推送远程分支?

8

我正在尝试从本地分支(甚至从本地的主分支/主干)向我的远程仓库提交PR,但无论我做什么都会出现以下错误:

本地main尝试:

(master)$ gh pr create --title "Adding readme" --body "Testing pr from cli" --head armsp:feature

Creating pull request for armsp:feature into master in armsp/----

pull request create failed: GraphQL error: Head sha can't be blank, Base sha can't be blank, No commits between master and feature, Head ref must be a branch

从本地特性分支尝试:

(feature)$ gh pr create --title "Adding readme" --body "Testing pr from cli" --head armsp:feature

Creating pull request for armsp:feature into master in armsp/----

pull request create failed: GraphQL error: Head sha can't be blank, Base sha can't be blank, No commits between master and feature, Head ref must be a branch

整个过程的一般步骤为:
  1. 从本地主干提交和推送一些文件到远程主干
  2. 创建新的本地分支feature,编辑一些内容,提交更改
  3. PR
    1. 使用--head参数从本地分支直接向远程发出PR而不创建相同的远程分支
    2. 从本地主干使用--head参数,而不创建远程分支
我在GitHub CLI仓库上看到了几个问题,它们似乎已经在一个版本中得到了修复,但很遗憾,对我仍然无效。 我的gh版本:
$ gh version
gh version 1.2.1 (2020-11-11)

注意:必须通过终端/cli完全进行PR。


从远程到本地的拉取请求有什么用?拉取请求是请求远程GitHub工作流告诉上游/管理者“嘿,我的代码已经准备好了,请接受它”。您正在本地计算机上工作,您下载自己的代码。您能帮忙更好地理解这个过程吗? - Daemon Painter
@DaemonPainter,简短的回答是我只是想让这个链接 https://cli.github.com/manual/gh_pr_create 能够正常工作。实际上我的意思是,我的代码已经准备好了,在本地分支上可以合并到远程的“main” / “master”。 - jar
第一行说明:“当当前分支没有完全推送到git远程时,会提示在哪里推送该分支,并提供一个选项来fork基本存储库。使用'--head'显式跳过任何fork或推送行为。”(我强调)。请注意,“完全”是与“部分”推送相对隐含的。必须在远程上有东西才能创建Pull Request。除非您希望远程从您的本地获取/拉取。 - Daemon Painter
@DaemonPainter 这正是我所期望的 - GitHub CLI 可以接受本地更改(从主分支到源分支的差异),并且基本上可以在不创建和推送不必要的分支(仅为了创建 PR)的情况下创建 PR。 - undefined
1个回答

4
你不能这样做,至少要先在远程创建一个分支。
Git vs GitHub中Pull Request是什么 的必要介绍之后,我引用以下内容:
“Pull requests让你告诉其他人你已经推送到GitHub存储库中某个分支的更改。一旦打开了拉取请求,你可以与协作者讨论和审查潜在的更改,并在将更改合并到基础分支之前添加跟进提交。来源。”
GitHub PR需要在远程GitHub服务器上有一些代码,至少需要有一个分支。
将以下文本翻译为中文:
创建拉取请求以提出并协作对存储库进行更改。这些更改是在分支中提出的,这可以确保默认分支仅包含完成和批准的工作。source
如果您希望在不存在的分支上打开远程拉取请求,请先创建该分支,然后再尝试。请记住,您将无法自动从本地获取或拉取内容到远程,因此最终您将不得不将其推送。

是的,现在我感觉很蠢。你是对的。一旦我创建了远程分支,它就起作用了。那个 "--head" 的东西让我很困惑。 - jar
1
不要这样,这是一个非常有效的问题,我觉得你在 gh 函数上链接的页面对这个主题描述过于模糊。 - Daemon Painter
+1 这确实是一个有效的问题,我认为 GitHub CLI 可以在不需要你拥有远程分支的情况下进行 PR,只需将你的本地更改提交即可。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接