【问题标题】:How to do a Git pull request on remote branches via the command line如何通过命令行在远程分支上执行 Git 拉取请求
【发布时间】:2020-05-14 10:40:50
【问题描述】:

我感觉我用错了词,或者误解了我使用的词,这使得搜索我想做的事情变得困难。

现在我有一个 Git 存储库,其中 3 个分支托管在 Azure Devops 上(非常类似于 Github/Gitlab/Bitbucket 等)。

我当前的流程是在本地提交和推送(使用 PHP Storm),然后登录到 Azure Devops 并手动使用他们的 UI 从我的 develop 分支到我的 staging 分支执行拉取请求。然后我登录服务器并从staging 分支 git pull。

我一共有三个分支developstagingproduction

但是在我的本地机器上我只有develop,其他的只存在于远程服务器上。我只是在develop 工作并推送到origin/develop,然后从developstaging 发出拉取请求,然后在准备好时再到production

我认为必须有一种方法可以编写脚本来一次完成所有这些操作,而不必登录到 Azure Devops 或服务器。

尽可能简单地总结我的问题:

我目前必须登录 Azure Devops 并执行以下操作:

  1. 登录 Azure Devops
  2. 点击分支
  3. 点击staging 分支旁边的“New Pull Request”
  4. 写一个提交信息(实际上标记为“标题”)
  5. 点击“完成”
  6. 点击“完成合并”

我想避免登录 Azure Devops 并能够通过命令行实现这一点。这可能吗?

更新

我发现我基本上可以通过登录服务器并执行以下操作来做我想做的事:

  • git pull(即使我在登台阶段,这也会拉动最新的发展
  • git merge origin/develop(这将在本地合并开发到登台)
  • git push(这将更新远程登台)

这很有效,但一个缺点是似乎没有办法跟踪 stagingdevelop 之间的距离,这是由 azure devops UI 提供的。

【问题讨论】:

  • 有一个 API:docs.microsoft.com/en-us/rest/api/azure/devops/git/… - 我绝对没有 XP。但是有人可能已经使用 api 编写了一个命令行实用程序(相当于 hub command line...)
  • @Zeitounator 啊,它必须通过 Azure api 完成,这需要额外的身份验证等吗?我认为它可以简单地通过 git 命令来完成。
  • 一个选项是通过管道编排它。根据您的提交消息,通过 API 创建和完成 PR 的条件步骤。 $Build.SourceVersionMessage.

标签: git azure-devops git-merge pull-request


【解决方案1】:

有一个 Azure 命令行客户端,您可以使用它来create a pull request,但不能合并一个。如果你也想合并它,你需要使用 Zeitounator 提到的 API。

根据您想要执行的操作,您可以使用azure repos pr update 命令和--auto-complete 使其在您满意时自动合并作为一种解决方法。

【讨论】:

  • 啊,它必须通过 Azure api 完成,这需要额外的身份验证等吗?我认为它可以简单地通过 git 命令来完成。
  • 拉取请求不是原生 Git 概念。它们是各种平台建立在它之上的东西。
  • 这是有道理的,为什么我很难用谷歌搜索它。
【解决方案2】:

实际上有多种方法可以在 Azure DevOps 中创建拉取请求。例如:来自 web 上的 Pull Requests 页面、Visual Studio 中的 Team Explorer、链接工作项中的 Development 部分。

What you are looking for is creating pull request from Git Bash into Azure DevOps.

我们可以使用 VSTS CLI 命令扩展 Git 别名来实现它。

VSTS CLI interface,我们可以configure to use git aliases,包括创建拉取请求。

详情可以查看这个文档:

Visual Studio and Azure DevOps Git: Extend the git command line with server commands–Part 2

此外,您还可以创建一个 PowerShell 脚本来简化流程。基本上你需要做的是:

  • 获取 Azure DevOps 访问令牌
  • 将令牌传递给 PowerShell 并让它运行设置步骤。

    您可以在这里查看详细信息

Git Hub Repo

【讨论】:

  • 我一直在试图弄清楚执行拉取请求与合并相比有什么好处,看来我对问题的更新正是我想要的。我想我只是被 Web 客户端中的“拉取请求”一词所排除在外。
【解决方案3】:

我发现我基本上可以通过登录服务器并执行以下操作来做我想做的事:

git pull

(这将拉动最新的发展,即使我在登台

git merge origin/develop -m "My commit message"

(这会将develop合并到本地staging)

git push

(这将更新远程登台)

您还需要在本地进行开发才能使其正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2013-06-06
    • 2019-12-08
    相关资源
    最近更新 更多