LarryDpk
发布于 2023-02-10 / 407 阅读
0

Synchronize GitHub with Gitee and push code to muliple repositories

Create Gitee Repository from GitHub

I already have GitHub repository, now need to create the same one on Gitee. The Gitee supports importing from GitHub:

Push code to both repositories

Check the current remote repo:

$ git remote -v
origin  git@github.com:LarryDpk/pkslow-samples.git (fetch)
origin  git@github.com:LarryDpk/pkslow-samples.git (push)

Add Gitee URL to the remote config:

$ git remote set-url --add origin git@gitee.com:larrydpk/pkslow-samples.git

Now we have two URL for pushing code:

$ git remote -v
origin  git@github.com:LarryDpk/pkslow-samples.git (fetch)
origin  git@github.com:LarryDpk/pkslow-samples.git (push)
origin  git@gitee.com:larrydpk/pkslow-samples.git (push)

Let’s try!

Update one file and commit:

$ git commit -m "add gitee url"
[master 4982dc5] add gitee url
 1 file changed, 3 insertions(+)

Push code:

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 357 bytes | 357.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:LarryDpk/pkslow-samples.git
   3b350aa..4982dc5  master -> master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 357 bytes | 357.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:larrydpk/pkslow-samples.git
   3b350aa..4982dc5  master -> master

From the console, the code is successfully pushed to both repositories.

Config file

There another way to config the remote repository. Just put your config in file: .git/config

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[remote "origin"]
        url = git@github.com:LarryDpk/pkslow-samples.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@gitee.com:larrydpk/pkslow-samples.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

We can add multiple remote:

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = git@github.com:LarryDpk/pkslow-samples.git
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = git@gitee.com:larrydpk/pkslow-samples.git
[remote "github"]
	url = git@github.com:LarryDpk/pkslow-samples.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[remote "gitee"]
	url = git@gitee.com:larrydpk/pkslow-samples.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

Now we can just push to one remote repository:

$ git remote -v
gitee   git@gitee.com:larrydpk/pkslow-samples.git (fetch)
gitee   git@gitee.com:larrydpk/pkslow-samples.git (push)
github  git@github.com:LarryDpk/pkslow-samples.git (fetch)
github  git@github.com:LarryDpk/pkslow-samples.git (push)
origin  git@github.com:LarryDpk/pkslow-samples.git (fetch)
origin  git@github.com:LarryDpk/pkslow-samples.git (push)
origin  git@gitee.com:larrydpk/pkslow-samples.git (push)

$ git push github
Everything up-to-date

$ git push gitee
Everything up-to-date

Note: Make sure you add the SSH key on GitHub and Gitee.


References:

https://developer.aliyun.com/article/907034