我在 GitHub 上有一个公共存储库,用于存储我的项目的最新更新。
┌───────────────┐ ┌───────────────┐ ┌────────────────┐
│ │ │ │ │ │
│ GitHub │ Public │ GitHub │ Private │ GitLab │
│ │ contrib│ │ contrib │ │
│ Public fork ◄────────► Public repo │x─────────x│ Private mirror │
│ │ Create │ │ Cannot │ │
│ Downstream │ PR │ Upstream │ create PR │ Downstream │
│ │ │ │ (push/pull│ │
└───────────────┘ └───────────────┘ via local└────────────────┘
machine)
捐款是公开和私下进行的:
正如我所说,我有一个 GitLab 镜像。这意味着我不会对那里的主分支进行任何更改,我只是从上游pull更改。我知道像双向镜像之类的东西可能可以在我的情况下使用,但通常建议不要为 CAP 定理 等这样做。
因此,私人贡献的工作流程(将更改从 GitLab 上的私人镜像推送到 GitHub 上的公共存储库)如下:
我不喜欢我的工作流程中的以下几点:
您可以创建两个标签
merged
和 abandoned
分别标记 MR 是在 GitHub 上关闭并合并,还是废弃。
我不确定你的意思。如果您经常需要同时执行 2b 和 2c,您可以编写一个脚本来执行这两个步骤:(假设remote
gitlab
指向GitLab,而remotegithub
指向GitHub)
#!/bin/bash
git pull gitlab "$@" && git push github "$@"
该脚本采用分支名称作为其命令行参数。