我在Gitea下有一个存储库,在GitHub下有另一个存储库。我需要以一种方式连接这两者:在两个存储库中创建一个专用分支并连接分支。例如:
- Gitea repo 有一个分支:
/send-to-github
- GitHub repo 有一个分支:
/receive-from-gitea
每次我在 Gitea 中推送提交时,提交都会自动触发一个事件,该事件会在 GitHub 分支中推送相同的代码。
如何实现?
您可以根据需要更改远程 URL。您可以查看此答案以获取更多信息:如何更改远程 Git 存储库的 URI (URL)?
因此,一种方法是创建一个脚本,在每次推送时执行以下操作:
请注意,当多人使用 repo 时,这将导致问题。基本上,您必须复制所有 git 操作才能使用两个存储库。
其他方法可能是,如果将 GitHub 用作“备份”存储库以创建一个循环作业,该作业将拉取存储库 A 并强制推送到存储库 B
如果我对您的理解正确,您的目标是复制(采摘)每个提交从send-to-github
分支receive-from-gitea
。
我会假设有更优雅的方法可以实现这一点,但这是一种快速而肮脏的方法来获得(我假设)你想要的东西。
有一些先决条件需要涵盖,例如 - 已经定义了 2 个远程 URL(origin
并github
作为示例)。
像这样为自己创建一个脚本:
#!/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
,它应该可以按预期工作。