将本地一个旧仓库推送到Github私有仓库以及关联多个仓库

微软收购Github以后,于当地时间2019年1月7日宣布Github私有仓库免费,但每个私有仓库的协作者不能超过3人。我们可以愉快地把自己的个人项目放在Github上了。以下是将一个本地旧仓库上传到Github的基本过程。

1. 首先注册Github帐号

然后点击Github页面右上角的➕,然后选择New repository创建一个私有仓库
将本地一个旧仓库推送到Github私有仓库以及关联多个仓库_第1张图片

2. 输入仓库名称。

本例中仓库名称为test,然后选择Private,点击下方绿色的Create repository。既然我们是推送旧仓库,就不要选择Initialize this repository with a README
将本地一个旧仓库推送到Github私有仓库以及关联多个仓库_第2张图片
后面的步骤其实都写在创建成功以后返回的页面上,此时你已经有了这个仓库的https和ssh链接:https://github.com/simonliu009/test.git / [email protected]:simonliu009/test.git
`
将本地一个旧仓库推送到Github私有仓库以及关联多个仓库_第3张图片

3. 设置https buffer

如果你使用https链接,那么建议先设置https的buffer
git config http.postBuffer 524288000
即修改提交缓存大小为500M(每个仓库都需要如此操作)。
否则上传较大项目很容易出现如下错误信息:
fatal: the remote end hung up unexpectedly

4. 上传

如下操作过程中应该会弹出github登录对话框,使用github账号登录即可。

  • 4.1 如果你是在一个文件夹新建仓库,那么类似如下操作:
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/simonliu009/test.git
git push -u origin master
//如果要推送所有分支
git push --all origin
  • 4.2 如果你需要上传一个旧仓库,那么需要在仓库目录下:
git remote add origin https://github.com/simonliu009/test.git
git push -u origin master
//如果要推送所有分支
git push --all origin

以后再次更新只需要提交commit以后git push即可。

5. 常见问题

如果你不小心选择了Initialize this repository with a README选项。那么运行
git remote add origin https://github.com/simonliu009/test.git
可能会提示
fatal: remote origin already exists.

所以最好是运行
git remote set-url origin https://github.com/simonliu009/test.git

因为远程仓库此时已经有一个新的README.md,所以如果你此时直接运行推送命令:
git push -u origin master
可能会提示

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/simonliu009/test.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.

所以需要先把远程的仓库合并到本地,但是现在如果你直接git pull可能会提示:

fatal: refusing to merge unrelated histories

所以你应该这样:
git pull origin master --allow-unrelated-histories
然后git add ., 做一次提交:git commit,然后再运行

git push -u origin master 以推送master分支。
或者
git push --all origin 以推送所有分支

6. 推送到多个远程仓库

有的时候我们需要把一个项目推送到多个远程仓库作为备份。假设我们已经在按照上文的方法设置了一个远程主机,别名是origin,如果还需要推送到别的远程仓库有如下两种方法:

  • 6.1 所有远程仓库使用相同的别名origin,假设第二个远程仓库主机是码云,我们的推送目标仓库地址为https://gitee.com/simonliu009/test.git
    那么应该使用git remote set-url --add origin设置
git remote set-url --add origin https://gitee.com/simonliu009/test.git

此时git remote -v即可以看到所有的远程仓库

$ git remote -v
origin  https://github.com/simonliu009/test.git (fetch)
origin  https://github.com/simonliu009/test.git (push)
origin  https://gitee.com/simonliu009/test.git (push)

以后如果要推送所有分支到所有远程仓库,只需要输入
git push --all origin
即可。

  • 6.2 远程仓库使用不同的别名,比如使用gitee作为码云的远程仓库别名:
    那么应该使用git remote add设置
    git remote add gitee https://gitee.com/simonliu009/test.git
    git remote -v即可以查看所有的远程仓库
$ git remote -v
gitee	https://gitee.com/simonliu009/test.git (fetch)
gitee	https://gitee.com/simonliu009/test.git (push)
origin	https://github.com/simonliu009/test.git (fetch)
origin	https://github.com/simonliu009/test.git (push)

那么推送到两个远程仓库则需要分别push两个别名:

  • 推送到github使用:
    git push --all origin

    git push推送当前分支
  • 推送到gitee使用:
    git push --all gitee

    git push gitee master 推送master 分支

你可能感兴趣的:(Git)