抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

由于众所周知的原因,在国内访问Github时常会出现不稳定的情况,为了便捷访问若能实时同步多一份代码到Gitee就最好了。

方式一:手动同步

在Gitee中绑定完成Github账户后可以选择导入仓库,导入仓库完成后在Gitee的项目主页中会出现一个同步按钮,只需点击一下即可一键同步Github对应仓库的内容。

绑定Github账户

在Gitee个人设置的基本设置中的账号信息部分可以绑定Github账户。
Gitee账户绑定Github账户

导入仓库

点击导航栏中的+可以看到从Github导入仓库的选项。
导入仓库
在选项卡中选择导入Github仓库,点击导入后等待导入成功即可。

点击同步

在已导入的仓库的仓库名右侧可以看到一个同步按钮,点击即可手动强制同步Github仓库。
强制同步

方式二:分别推送

在本地Push的时候直接分别Push到Github和Gitee上。

方式三:Github Action自动同步

Github Action在官网是这样描述的

GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline.

简而言之就是一种可以便捷地帮助我们自动构建、测试、部署代码的工作流。

我们可以利用在GitHub上的hub-mirror-action进行使用,能直接使用他人造好的轮子能非常方便实现我的需求。

前提设置

建议

建议按方式一先操作一遍,若直接使用hub-mirror-action进行初次同步并创建Gitee仓库,则在Gitee的项目中不会出现强制同步仓库的按钮,也就无法手动同步仓库了。

Gitee账户绑定Github账户

这一步是为了便于同步仓库以及正确显示提交者记录。

Github账户设置

确认Github的账户设置中的Keep my email adress private未勾选,勾选后会导致非push操作修改提交的改动在同步到Gitee后,无法正确将Github账户的提交者转换为所绑定的Gitee账户,从而出现不正确的提交者记录。
Github_Settings_Access_Keep my email adress private

分别创建仓库

Fork hub-mirror-action仓库(非必须)

这一步是为了避免原作者这个仓库hub-mirror-action被移除后导致无法使用,于是Fork一份到自己的仓库中。
也可以直接使用原作者的仓库,可以省得反复去更新自己Fork的这份仓库。

创建SSH密钥

1
ssh-keygent -t rsa -C github_gitee

其中参数-t为加密类型,-C为注释
ssh-keygent
然后在.ssh目录下即可看到id_rsa_github_giteeid_rsa_github_gitee.pub,其中id_rsa_github_gitee为私钥,id_rsa_github_gitee.pub为公钥。

创建Gitee私人令牌

在Gitee的设置-安全设置-私人令牌中可以创建私人令牌,用于在同步时创建不存在的仓库。
注意:此处的Token只会显示一次,请复制并保存好。
Gitee私人令牌

将密钥和令牌添加到项目仓库

在项目仓库的Settings-Secrets-ActionNew repository secret
Secrets的命名建议与图中相同。
GITEE_PRIVATE_KEY填写id_rsa密钥。
GITEE_TOKEN填写Gitee私人令牌。
Settings_Secrets_Action

添加Workflow脚本

在仓库根目录下创建.github/workflows目录,并将以下内容根据自己的配置自行修改,修改完成后放置在.github/workflows目录下,脚本执行后在Action中可以查看执行情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: syncToGitee
on:
# 添加手动触发按钮
workflow_dispatch:
# push时触发
push:
branches:
- master
# 定时运行
schedule:
# Runs at 01:00 UTC (9:00 AM Beijing) every day
- cron: '0 1 * * *'
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- name: Mirror the Github repos to Gitee.
# 若使用自己的Fork仓库则须修改以下部分
uses: Yikun/hub-mirror-action@master
with:
# 源端账户名
src: 'github/账户名'
# 目的端账户名
dst: 'gitee/账户名'
# 用于在目的端上传代码的私钥
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
# 创建仓库的 API tokens ,用于自动创建不存在的仓库。
dst_token: ${{ secrets.GITEE_TOKEN }}
# 仅同步静态列表,如“repo1,repo2,repo3”
static_list: "仓库名"
# 启用 git push -f 强制同步,开启后会强制覆盖目的端仓库。
force_update: true
# 显示所有执行命令
debug: true

参考

Github_hub-mirror-action
巧用Github Action同步代码到Gitee
Github_Hub mirror template
搭建GitHub自动镜像至Gitee
一篇教你代码同步 Github 和 Gitee

评论