使用场景:
- 备份代码
- 在使用新的代码管理仓库的过渡过程中,我们并不想直接扔掉原有代码管理仓库,同时又不想维护两套代码(我遇到的场景是从Gerrit迁移到GitLab过程中)
有两种配置方式,直接看配置文件
- 修改项目.git文件下的config文件(提交到两个仓库的相同分支)
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = ssh://gradle仓库地址
url = http://gitlab仓库地址
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
- 修改项目.git文件下的config文件(提交到两个仓库的不同分支)
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "gradle"]
url = ssh://gradle仓库地址
fetch = +refs/heads/*:refs/remotes/gradle/*
[remote "gitlab"]
url = http://gitlab仓库地址
fetch = +refs/heads/*:refs/remotes/gitlab/*
[branch "master"]
remote = origin
merge = refs/heads/master
[alias]
publish=!sh -c \"git push gradle master && git push gitlab master:master\"
在没有特别要求时第一种配置方式更简洁。前提是在备份仓库建立同名的分支。
Tips:
在多人开发时,使用多个仓库提交的操作最好由特定一人合并代码进行提交,备份仓库的工程尽量避免被多个人同时修改