我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。

在GitHub出现以前,开源项目开源容易,但让广大人民群众参与进来比较困难,因为要参与,就要提交代码,而给每个想提交代码的群众都开一个账号那是不现实的,因此,群众也仅限于报个bug,即使能改掉bug,也只能把diff文件用邮件发过去,很不方便。

但是在GitHub上,利用Git极其强大的克隆和分支功能,广大人民群众真正可以第一次自由参与各种开源项目了。

如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:

git clone git@github.com:michaelliao/bootstrap.git

一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

Bootstrap的官方仓库twbs/bootstrap、你在GitHub上克隆的仓库my/bootstrap,以及你自己克隆到本地电脑的仓库,他们的关系就像下图显示的那样:

如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。

如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。

如果你没能力修改bootstrap,但又想要试一把pull request,那就Fork一下我的仓库:https://github.com/michaelliao/learngit,创建一个your-github-id.txt的文本文件,写点自己学习Git的心得,然后推送一个pull request给我,我会视心情而定是否接受。

小结

  • 在GitHub上,可以任意Fork开源仓库;

  • 自己拥有Fork后的仓库的读写权限;

  • 可以推送pull request给官方仓库来贡献代码。

使用码云

使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况(原因你懂的)。

如果我们希望体验Git飞一般的速度,可以使用国内的Git托管服务——码云(gitee.com)。

和GitHub相比,码云也提供免费的Git仓库,并且,免费版本还包含私有库。此外,还集成了代码质量检测、项目演示等功能。对于团队协作开发,码云还提供了项目管理、代码托管、文档管理的服务,5人以下小团队免费。

使用码云和使用GitHub类似,我们在码云上注册账号并登录后,需要先上传自己的SSH公钥。选择右上角用户头像 -> 菜单“修改资料”,然后选择“SSH公钥”,填写一个便于识别的标题,然后把用户主目录下的.ssh/id_rsa.pub文件的内容粘贴进去:

点击“确定”即可完成并看到刚才添加的Key:

如果我们已经有了一个本地的git仓库(例如,一个名为learngit的本地库),如何把它关联到码云的远程库上呢?

首先,我们在码云上创建一个新的项目,选择右上角用户头像 -> 菜单“控制面板”,然后点击“创建项目”:

项目名称最好与本地库保持一致:

然后,我们在本地库上使用命令git remote add把它和码云的远程库关联:

git remote add origin git@gitee.com:liaoxuefeng/learngit.git

之后,就可以正常地用git pushgit pull推送了!

如果在使用命令git remote add时报错:

git remote add origin git@gitee.com:liaoxuefeng/learngit.git
fatal: remote origin already exists.

这说明本地库已经关联了一个名叫origin的远程库,此时,可以先用git remote -v查看远程库信息:

git remote -v
origin    git@github.com:michaelliao/learngit.git (fetch)
origin    git@github.com:michaelliao/learngit.git (push)

可以看到,本地库已经关联了origin的远程库,并且,该远程库指向GitHub。

我们可以删除已有的GitHub远程库:

git remote rm origin

再关联码云的远程库(注意路径中需要填写正确的用户名):

git remote add origin git@gitee.com:liaoxuefeng/learngit.git

此时,我们再查看远程库信息:

git remote -v
origin    git@gitee.com:liaoxuefeng/learngit.git (fetch)
origin    git@gitee.com:liaoxuefeng/learngit.git (push)

现在可以看到,origin已经被关联到码云的远程库了。通过git push命令就可以把本地库推送到Gitee上。

有的小伙伴又要问了,一个本地库能不能既关联GitHub,又关联码云呢?

答案是肯定的,因为git本身是分布式版本控制系统,可以同步到另外一个远程库,当然也可以同步到另外两个远程库。

使用多个远程库时,我们要注意,git给远程库起的默认名称是origin,如果有多个远程库,我们需要用不同的名称来标识不同的远程库。

仍然以learngit本地库为例,我们先删除已关联的名为origin的远程库:

git remote rm origin

然后,先关联GitHub的远程库:

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

注意,远程库的名称叫github,不叫origin了。

接着,再关联码云的远程库:

git remote add gitee git@gitee.com:liaoxuefeng/learngit.git

同样注意,远程库的名称叫gitee,不叫origin

现在,我们用git remote -v查看远程库信息,可以看到两个远程库:

git remote -v
gitee    git@gitee.com:liaoxuefeng/learngit.git (fetch)
gitee    git@gitee.com:liaoxuefeng/learngit.git (push)
github    git@github.com:michaelliao/learngit.git (fetch) github git@github.com:michaelliao/learngit.git (push) 

如果要推送到GitHub,使用命令:

git push github master

如果要推送到码云,使用命令:

git push gitee master

这样一来,我们的本地库就可以同时与多个远程库互相同步:

码云也同样提供了Pull request功能,可以让其他小伙伴参与到开源项目中来。你可以通过Fork我的仓库:https://gitee.com/liaoxuefeng/learngit,创建一个your-gitee-id.txt的文本文件, 写点自己学习Git的心得,然后推送一个pull request给我,这个仓库会在码云和GitHub做双向同步。

转载于:https://www.cnblogs.com/Chary/p/No000010F.html

[No000010F]Git8/9-使用GitHub相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. GitHub 中 Merge pull request 的 3 中选项说明

    Merge pull request 提供了 3 种 merge 方法: Create a merge commit:GitHub 的底层操作是 git merge --no-ff.feature 分 ...

  3. cannot find package “github.com/json-iterator/go“cannot find package “github.com/modern-go/reflect2“

    1. 问题现象 ../github.com/coreos/etcd/client/json.go:18:2: cannot find package "github.com/json-ite ...

  4. 知名高校共享课程资源GitHub地址

    文章目录 浙江大学 上海交大 北京大学 中科大 清华大学 浙江大学 https://github.com/QSCTech/zju-icicles 上海交大 https://github.com/Coo ...

  5. github下载源码也用命令进行安装包的联系

    2.下载安装 git clone https://github.com/Parsely/pykafka.git 然后将下载下来的pykafka文件夹下的pykafka文件(pykafka的库文件)放到 ...

  6. 快速访问github镜像 wiki镜像重点_github问题小结

    20220331 https://mp.weixin.qq.com/s/7ZFcD9BMB5WQnDAqZUgELg 高效的搜索github 20210821 https://zgc261.com/w ...

  7. github下载慢,轻松提速教程

    20210818 idm 可以快速下载github 获取github的IP地址 访问:https://www.ipaddress.com/ 网址 依次获取以下三个网址的IP github.com gi ...

  8. GitHub无法显示图片问题解决

    在C:\Windows\System32\drivers\etc下的hosts文件后面添: # GitHub Start 192.30.253.112 github.com 192.30.253.11 ...

  9. GitHub上YOLOv5开源代码的训练数据定义

    GitHub上YOLOv5开源代码的训练数据定义 代码地址:https://github.com/ultralytics/YOLOv5 训练数据定义地址:https://github.com/ultr ...

最新文章

  1. 匹配算法:局部结构保留
  2. Saiku的下载与安装(一)
  3. 无人驾驶卡车实现量产 主线科技6个月完成13辆商业交付
  4. python如何判断字符串是否包含某些汉字_Python如何判断一个字符串是否包含指定子字符串...
  5. mysql索引如何做_5分钟,告诉你MySQL字符串怎么做索引
  6. Android窗口管理服务WindowManagerService的简要介绍和学习计划
  7. # 保持最外层获取焦点_大事件!沈阳爱尔白内障焕晶诊疗中心正式启用,两位PanOptix三焦点人工晶体植入患者清晰见证!...
  8. rabbitmq 拉取消息太慢_面试官:消息队列这些我都要问
  9. 3 MIGO采购订单收货报错-表T169P,表目S001不存在
  10. dbforge studio for oracle 注册,dbForge Studio for Oracle
  11. 怎样合理设置直通车宝贝的价格?
  12. c语言 vscode代码自动补全_借助C/C++ Extension实现VSCode C++代码补全
  13. 软件测试自学指南---从入门到精通
  14. Ubuntu各版本下载安装知网论文阅读神器CAJViewer,并添加快捷图标启动方式
  15. php获取汉字的首字母,php获取汉字拼音首字母的函数(真正可以使用的)
  16. linux ar3012蓝牙驱动,佳能 Bluetooth AR3012 驱动程序下载-更新佳能软件(蓝牙)
  17. [编程题]雀魂启动!(java实现)
  18. 行逻辑链接的顺序表(压缩存储稀疏矩阵)详解
  19. winRE环境下使用xcopy时显示未找到文件
  20. 去除input边框以及选中时边框 默认样式

热门文章

  1. 大型互联网应用中的日志系统
  2. SSMS2008插件开发(3)--部署调试SSMS2008插件
  3. XAML Region标签功能
  4. shell写的检测linux系统硬件信息的脚本
  5. 无线信号功率计算公式(自由空间模型,地面反射模型)
  6. anaconda程序组中的各个组件都是做什么用的
  7. 赛灵思FPGA中的主要时钟资源介绍
  8. 从TimeQuest角度看set_max_delay
  9. xilinx的FPGA动态局部重配置(DPR)
  10. 计算机三级考试网络技术怎么复习,2017计算机三级考试的三大复习阶段(网络技术为例)...