git一个项目设置多个远程仓库

需求很简单

首先我的远程仓库没有其他分支,只有主分支
只想在本地修改一份代码后,可以通过终端一键推送到两个远程仓库。

网上的教程是这样的

修改.git/config配置文件

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = [email protected]:okerivy/xxxx.git
    url = [email protected]:chatcoin/xxxx.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

出问题

用了上面的方法,结果推送不上去,一直报错

➜  chatcoinCode git:(master) git push  origin --all

Everything up-to-date
To github.com:okerivy/xxxx.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:okerivy/xxxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

细节问题

首先我的代码是 oschina 上的。本地有一份代码。
开始的.git/config配置文件是这样的

[remote "origin"]
    url = [email protected]:chatcoin/xxxx.git
    fetch = +refs/heads/*:refs/remotes/origin/*

第一步,需要把本地所有的更改先提交到 oschina 上。

第二步,在 Github 上创建一个空的项目,什么都不要选。复制 ssh 到 .git/config配置文件,并删除 oschina 的 url

[remote "origin"]
    url = [email protected]:okerivy/xxxx.git
    fetch = +refs/heads/*:refs/remotes/origin/*

第三步,把本地代码全部强制推送到 Github。

git push -f origin master

第四部,修改.git/config配置文件,把两个 url 全部添加

[remote "origin"]
    url = [email protected]:okerivy/xxxx.git
    url = [email protected]:chatcoin/xxxx.git
    fetch = +refs/heads/*:refs/remotes/origin/*

第五步,修改项目文件,用终端命令 push 测试下

添加项目
git add .

填写提交信息
git commit -m “提交信息"

提交到服务器
git push -u origin master

获取提交的commit信息
git log

两个网站都更新成功

你可能感兴趣的:(git一个项目设置多个远程仓库)