# 前言

github 仓库可以直接导入到 gitlab,但是 gitlab 的自动同步需要付费,所以只能另辟蹊径手动同步。
利用 github action 执行同步。

# 步骤

# 在 github 仓库中新建一个 workflow

在仓库根目录下创建文件:
.github/workflows/sync_gitlab.yml

name: Sync GitHub to GitLab
on:
  push:
    branches:
      - main  # 根据需求同步指定分支
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout full Git history
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Configure Git
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
      - name: Add GitLab remote
        run: |
          # 替换为你的GitLab仓库URL和项目名,并确保在仓库的Secrets中设置了GITLAB_TOKEN
          git remote add gitlab https://oauth2:$@gitlab.com/username/xiangmu.git  
      - name: Push branches to GitLab
        run: git push --force --all gitlab
      - name: Push tags to GitLab
        run: git push --force --tags gitlab

# 配置 gitlab 的 token

用户设置 -> 访问令牌

  • 创建 Token:
    Name: 任意名称(例如 github-sync-token)
  • 权限 Scopes:
    read_repository ✅
    write_repository ✅

# 设置 github 仓库的 secrets

  • 给 GitHub Actions 设置 Secrets
    进入 GitHub 项目仓库 > Settings > Secrets and variables > Actions。
  • 添加 Secrets:
    GITLAB_TOKEN:粘贴 GitLab 生成的 Token

# 测试同步

进入仓库的 Actions 页面,找到刚才创建的 workflow。
手动触发一次 workflow,查看同步结果。

更新于 阅读次数