具体情况不多介绍,上干货,同步共有两种方式
1.通过秘钥同步
说明一下,这种方式有点繁琐,而且只能把 GitHub 的代码同步到 gitee 码云上,暂时无法同步到 coding 上至少在本人的测试中,coding 是没办法的),具体步骤如下。
首先,在命令行终端使用命令ssh-keygen -t rsa生成 SSH Key(输入命令后连续三次回车,中间不要输入任何字符),生成的 id_rsa 是私钥,id_rsa.pub 是公钥。(注意此处不要设置密码,生成的公私钥用于下面 GitHub / Gitee 的配置,以保证公私钥成对,否则从 GitHub -> Gitee 的同步将会失败。
红框处就是秘钥文件所在目录,使用文本编辑器打开即可
第二,在 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),提交,成功触发同步!
使用账号密码的方式
这个方法参考的是 @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),提交,成功触发同步!
这个好
感谢分享,谢谢楼主,赞
看看看
继续加油哦,争取发表更多优秀帖子
谢谢分享,学习了
感谢大佬的教程
谢谢,分享学习了
谢谢分享,学习了
请问可以出一份 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 ```
前来顶贴!
打卡升级
这真是个好文章,谢谢
谢谢大佬分享,谢谢!
瞅瞅瞅瞅,mark一手
感谢分享,谢谢楼主,赞
mark一下。