如何在不使用 GUI 的情况下使用 Git CLI 打开 Pull Request

How do I open Pull Request using Git CLI without using GUI

以下是如何在 Bitbucket 上执行此操作的示例:Manually create a Git fork。我可能会使用他们的命令行 API 在 Bitbucket 上创建一个项目,但我至少需要阅读根项目权限。

语法如下:

curl -v --user {username}:"{password}" \ 
https://bitbucket.org/api/1.0/repositories/{accountname}/{repo_slug}/fork \ 
--data "name=mynewrepo"

项目 A 从帐户 B 分叉到我的帐户 C 中,名称为项目D,我将使用以下命令:

  1. curl -v --user XYZ:"XYZPASSWORDXYZ" \ https://bitbucket.org/api/1.0/repositories/ABC/ProjectABC/fork \ --data "name=ProjectXYZ"

  2. 现在,我将把这个项目克隆到我的本地机器上,git clone [project]

  3. 我将转到我的项目目录并添加 remote upstream 它将指向源存储库:git remote添加上游 [git]

  4. 现在,在任何时候从源存储库(比如从 master 分支)拉取更改,我将使用:git pull upstream master并将我的本地提交推送到服务器上的目标存储库,我将使用:git push origin master

当您对目标存储库的更改准备好与源存储库合并时,从 Bitbucket 网站或使用 Bitbucket API: Pull Request

创建一个合并请求

但是,如果您计算执行此操作的时间,如果您的系统速度较慢,则可能需要 30 秒到 2 分钟。我的观点是,有没有一种方法可以仅使用一个命令来发送 Pull Request 而无需所有这些东西?

如果您的下载速度有问题,您可以尝试使用浅克隆仅下载存储库历史记录的一部分:

# on cloning :
git clone <url> --depth 1

# on fetching :
git fetch --depth 1 origin <branch>

请注意,浅克隆有其自身的局限性,例如无法检查完整的历史记录(显然......)或者在某些情况下无法合并或变基,如果你没有足够的本地历史记录来找到两个分支的共同祖先。

然而,您可以通过获取所需分支的更深层历史来按需加深浅层克隆:

git fetch --depth 20 origin master
git fetch --depth 100 origin develop

如果速度缓慢源于 api 调用,则您必须仔细查看文档,看看是否可以使用更便宜的调用来满足您的需求。


如果您在 运行 本地命令或推送时遇到问题,我不知道如何避免这些操作。

您可能想了解如何在远程计算机上执行您的工作,这将具有不错的 cpu-power and/or 上传速度。

我按照 GitHub CLI Manual 提供的文档解决了它。使用命令行创建 Pull Request 非常简单:gh pr create