0

我在Gitea下有一个存储库,在GitHub下有另一个存储库。我需要以一种方式连接这两者:在两个存储库中创建一个专用分支并连接分支。例如:

  • Gitea repo 有一个分支:/send-to-github
  • GitHub repo 有一个分支:/receive-from-gitea

每次我在 Gitea 中推送提交时,提交都会自动触发一个事件,该事件会在 GitHub 分支中推送相同的代码。

如何实现?

4

2 回答 2

0

您可以根据需要更改远程 URL。您可以查看此答案以获取更多信息:如何更改远程 Git 存储库的 URI (URL)?

因此,一种方法是创建一个脚本,在每次推送时执行以下操作:

  1. 推送到 Gitea 仓库
  2. 将远程 url 切换到 GitHub 存储库
  3. 推送到 GitHub 存储库
  4. 将远程 URL 切换回 Gitearepo

请注意,当多人使用 repo 时,这将导致问题。基本上,您必须复制所有 git 操作才能使用两个存储库。

其他方法可能是,如果将 GitHub 用作“备份”存储库以创建一个循环作业,该作业将拉取存储库 A 并强制推送到存储库 B

于 2021-06-02T07:10:49.933 回答
0

如果我对您的理解正确,您的目标是复制(采摘)每个提交从send-to-github分支receive-from-gitea

我会假设有更优雅的方法可以实现这一点,但这是一种快速而肮脏的方法来获得(我假设)你想要的东西。

有一些先决条件需要涵盖,例如 - 已经定义了 2 个远程 URL(origingithub作为示例)。

像这样为自己创建一个脚本:

#!/bin/bash

# First push to gitea
git push origin send-to-github

# Get the currently pushed commit that you just created and pushed
CURR_COMMIT_SHA=$(git rev-parse HEAD)

# Go to your other branch that must go to github
git checkout receive-from-gitea

# Apply the commit so that it is "copied" onto the github branch
git cherry-pick $CURR_COMMIT_SHA

# Push to your github remote repository
git push gitub receive-from-gitea

使其可执行并将其作为别名添加到您的 git 配置中:

[alias]
    double-push = "!c() { bash /path/to/script.sh ; }; c"

然后,一旦您准备好提交并推送到您的 Gitea 存储库,而不是git push使用您新创建的别名进行推送git double-push,它应该可以按预期工作。

于 2021-06-02T07:19:57.090 回答