转自: 添加远程仓库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

$ git remote add origin git@github.com:michaelliao/learngit.git

请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

小结

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

附:

第一次执行的时候遇到报错如下:

Permission denied (publickey).
fatal: Could not read from remote repository. Please make sure you have the correct access rights
and the repository exists.

而Github页面上(创建第一个仓库成功之后)提示如下:

git remote add origin https://github.com/myGitHubaccount/learngit.git 
git push -u origin master

执行后仍然报错。

查网后得:

git push  https://github.com/myGitHubaccount/learngit.git

成功了,但若再执行:

git push -u origin master

仍然报错。查看原文评论得:将id_rsa文件和id_rsa.pub文件拷贝到主目录(windows的C盘的Windows用户名命名的文件夹)下的  .ssh 文件夹(注意文件夹名以点开头)下,再执行,KO!

最新文章

  1. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
  2. bzoj 1146 [CTSC2008]网络管理Network
  3. 分享个刚写好的 android 的 ListView 动态加载类,功能全而代码少。
  4. Hdu3072-Intelligence System(强连通求最小值)
  5. IE 调试JS加断点不管用 增加debugger
  6. 教你看懂C++类库函数定义之二---STDMETHOD介绍
  7. 最短路径A*算法原理及java代码实现(看不懂是我的失败)
  8. vuejs子组件向父组件传递数据
  9. 远程桌面服务当前正忙,因此无法完成您尝试执行的任务-win2008R2
  10. 【Shared Server Mode】测试调整shared_servers参数对数据库的影响
  11. python 使用PyInstaller将程序打包
  12. 关于linux中用vi新建立一个.c文件无法保存,显示E212错误的时候
  13. angular4-http
  14. lu协程练习
  15. Android-XML格式描述
  16. HDU 5253 连接的管道(Kruskal算法求解MST)
  17. Implement Queue by Two Stacks
  18. LeetCode OJ:Gas Station(加油站问题)
  19. 从数据库导出数据到excel之List<List<Object>>导出
  20. 代码分析工具推荐Understand

热门文章

  1. [luogu P2391] 白雪皑皑
  2. 2x or 3X的图
  3. 苹果手机的SB系列(4)你让我除了退出还能按哪个键
  4. python 多进程多线程的对比
  5. 并查集(POJ1182)
  6. Exception、Thorow、Throws、TryCatch
  7. 链接中 href='#' 和 href='###' 的区别
  8. CISCO 关闭4786端口解决方法
  9. spring不走注解的原因
  10. 使用turtle画故宫(伍奇,侯俊豪小组)