将分支推送到 GitHub 后,如何将带有 link 的消息添加到新的拉取请求页面?

How to add message with link to new pull request page after pushing branch to GitHub?

例如,当我将分支推送到 GitLab 或 Bitbucket 时,我看到这样的消息:

Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for branch-name, visit:
remote:   https://gitlab.com/username/reponame/merge_requests/new?merge_request%5Bsource_branch%5D=branch-name
remote:
To gitlab.com:username/reponame.git
 * [new branch]      branch-name -> branch-name

有没有简单的方法可以为 GitHub 添加这样的消息?

该消息来自远程存储库中配置的 post-receive hook。它是 Git 服务器上软件 运行 的一部分。

除非您可以修改服务器 (GitHub) 上的代码,否则您无法对其进行自定义。

正如@Jonathon Reinhart 提到的,您必须添加使用挂钩才能实现您的请求。

GitHub 中,您必须为此创建 WebHooks
阅读 here 如何在您的 GitHub 帐户下创建挂钩。


如何将 webhook 添加到 GitHub

在GitHub中:

1. Sign in, then select the related repository you own.
2. Click on "Settings" on the right panel.
3. Then click on "Webhooks" on the left panel.
4. Click on the "Add WebHook" Button.
5. Paste the copied URL in the URL form field.
6. Select "application/json" as the content type.
7. Select "Just the push event"
8. Leave the "Active" checkbox checked.
9. Click on "Add webhook" to save the webhook.

这里是使用 bash 脚本为 git origin push remote 的解决方法。

创建文件 ~/.github-create-pr.sh 包含:

#!/bin/bash
#
# ~/.github-create-pr.sh

IS_GITHUB=$(git remote -v | grep "origin.*(push)" | grep -c "github.com")

if [ $IS_GITHUB -ne 0 ]; then
  REPO_NAME=$(git remote -v | grep "origin.*(push)" | sed 's/.*:\(.*\)\.git.*//g')
  BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
  echo ""
  echo "To create a merge request for $BRANCH_NAME, visit:"
  echo "https://github.com/$REPO_NAME/compare/$BRANCH_NAME?expand=1"
  echo ""
fi

然后

git push && sh ~/.github-create-pr.sh