GitHub 代码实时同步 gitee 和 coding

具体情况不多介绍,上干货,同步共有两种方式

1.通过秘钥同步

说明一下,这种方式有点繁琐,而且只能把 GitHub 的代码同步到 gitee 码云上,暂时无法同步到 coding 上至少在本人的测试中,coding 是没办法的),具体步骤如下。

首先,在命令行终端使用命令ssh-keygen -t rsa生成 SSH Key(输入命令后连续三次回车,中间不要输入任何字符),生成的 id_rsa 是私钥,id_rsa.pub 是公钥。(注意此处不要设置密码,生成的公私钥用于下面 GitHub / Gitee 的配置,以保证公私钥成对,否则从 GitHub -> Gitee 的同步将会失败。

GitHub 代码实时同步 gitee 和 coding

红框处就是秘钥文件所在目录,使用文本编辑器打开即可

第二,在 GitHub 项目的「Settings -> Secrets → New repository secret」路径下配置好命名为 GITEE_RSA_PRIVATE_KEY 和 GITEE_PASSWORD 的两个密钥。其中:

  • GITEE_RSA_PRIVATE_KEY 存放 id_rsa 私钥
  • GITEE_PASSWORD 存放 Gitee 帐号的密码

私钥文件 .ssh/id_rsa

公钥文件.ssh/id_rsa.pub

第三,在 GitHub 的个人设置页面「Settings -> SSH and GPG keys」配置 SSH Keys 公钥(即:id_rsa.pub),命名随意。

创建 workflow

在你的 GitHub 项目 .github/workflows/ 文件夹下创建一个 .yml 文件,如 sync.yml,内容如下:

name: SyncToGitee #命名随意
on:       #触发条件,自己可以随意修改
  push:
    branches: [main] #你的分支名
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Github Sync to Gitee #命名随意
        uses: wearerequired/git-mirror-action@master
        env:
          # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
          SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
        with:
          # 注意替换为你的 GitHub 源仓库地址
          source-repo: [email protected]:github用户名/仓库名.git
          # 注意替换为你的 Gitee 目标仓库地址
          destination-repo: [email protected]:gitee用户名/仓库名.git

执行同步

最后,修改代码(如修改 README),提交,成功触发同步!

GitHub 代码实时同步 gitee 和 coding
GitHub 代码实时同步 gitee 和 coding

使用账号密码的方式

这个方法参考的是 @abersheeran 的 push-to-mirror 方法,可以同步到 gitee 以及任何一个支持 git 的平台,其原理很简单,就拉取然后推送。

配置账号密码

首先,在 GitHub 项目的「Settings -> Secrets → New repository secret」路径下配置好你需要同步的 coding 和 gitee 账号密码(命名可以随便,只要求跟下面 sync.yml 的变量名称一致即可)。其中:

  • GITEE_USERNAME 存放 Gitee 的账号
  • GITEE_PASSWORD 存放 Gitee帐号的密码
  • CODING_USERNAME 存放 Coding 的账号
  • CODING_PASSWORD 存放 Coding帐号的密码

创建 workflow

在你的 GitHub 项目 .github/workflows/ 文件夹下创建一个 .yml 文件,如 sync.yml,内容如下:

name: Sync-To-Gitee-and-Coding
on:
  push:
    branches:
      - main
jobs:
  push-to-mirror:
    runs-on: ubuntu-latest
    steps:
      - name: Clone
        run: |
          git init
          git remote add origin https://github.com/${GITHUB_REPOSITORY}.git
          git fetch --all
          for branch in `git branch -a | grep remotes | grep -v HEAD`; do
            git branch --track ${branch##*/} $branch
          done
      - name: Push to Coding
        run: |
          remote_repo="https://${CODING_USERNAME}:${CODING_PASSWORD}@e.coding.net/${CODING_REPOSITORY}.git"
          git remote add coding "${remote_repo}"
          git show-ref # useful for debugging
          git branch --verbose
          # publish all
          git push --all --force coding
          git push --tags --force coding
        env:
          GITHUB_REPOSITORY: ${{ secrets.GIT_REPOSITORY }}    # github仓库分支  用户名/仓库名
          CODING_REPOSITORY: ${{ secrets.CODING_REPOSITORY }} # coding仓库分支  团队名/项目/仓库名
          CODING_USERNAME: ${{ secrets.CODING_USERNAME }}     # coding账号,'@'符号用'%40'代替
          CODING_PASSWORD: ${{ secrets.CODING_PASSWORD }}     # coding密码
      - name: Push to Gitee
        run: |
          remote_repo="https://${GITEE_USERNAME}:${GITEE_PASSWORD}@gitee.com/${GITEE_REPOSITORY}.git"
          git remote add gitee "${remote_repo}"
          git show-ref # useful for debugging
          git branch --verbose
          # publish all
          git push --all --force gitee
          git push --tags --force gitee
        env:
          GITEE_REPOSITORY: 用户名/仓库名
          GITEE_USERNAME: ${{ secrets.GITEE_USERNAME }}    #gitee账号
          GITEE_PASSWORD: ${{ secrets.GITEE_PASSWORD }}   #gitee密码

执行同步

最后,修改代码(如修改 README),提交,成功触发同步!

-> 加入科技玩家交流群组:点击加入 注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @nnn 发布。如若转载,请注明出处: 科技玩家 » GitHub 代码实时同步 gitee 和 coding

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿精选文章

【多图补充】黑裙DS918搭建自己家庭影音中心之xTeve与jellyfin配置

2022-2-10 12:37:07

教程玩家投稿精选文章

Nginx + FRP + 群晖 + Typecho配置证书实现HTTPS访问

2022-2-10 12:53:18

38 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1. 絮凝

    这个好

  2. LAzySleep

    感谢分享,谢谢楼主,赞

  3. 网络中心

    看看看

  4. LAzySleep

    继续加油哦,争取发表更多优秀帖子

  5. Z在学校

    谢谢分享,学习了

  6. 听书人

    感谢大佬的教程

  7. 萝卜头

    谢谢,分享学习了

  8. 这把看我表演

    谢谢分享,学习了

  9. fscarmen

    请问可以出一份 github ac 同步到 gitlab 和 BitBucket 的ac教程吗?我用以下这个不成功的 ``` name: GitlabSync on: - push - delete jobs: sync: runs-on: ubuntu-latest name: Git Repo Sync steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - uses: wangchucheng/[email protected] with: # Such as https://github.com/wangchucheng/git-repo-sync.git target-url: $ secrets.TARGET_URL # Such as wangchucheng target-username: $ secrets.TARGET_USERNAME # You can store token in your project's 'Setting > Secrets' and reference the name here. Such as $ secrets.ACCESS_TOKEN target-token: $ secrets.TARGET_TOKEN ```

  10. slimei

    前来顶贴!

  11. slimei

    打卡升级

  12. 幻念

    这真是个好文章,谢谢

  13. 幻念

    谢谢大佬分享,谢谢!

  14. 幻念

    瞅瞅瞅瞅,mark一手

  15. seatom

    感谢分享,谢谢楼主,赞

  16. 幻念

    mark一下。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索