GitHub

本地库与远程库开发模式

开发模式一:团队内部协作



项目经理岳不群,程序员令狐冲

  1. 岳不群把他的本地库推送到远程库
  2. 令狐冲克隆远程库到自己的本地库
  3. 令狐冲在自己本地库的基础上修改代码,提交到本地库,再推送回远程库
  4. 由于这个远程库是岳不群创建的,推送权限需要加入团队才行
  5. 岳不群邀请令狐冲加入团队
  6. 令狐冲推送到远程库后,岳不群需要拉取远程库的修改,拉取到本地

开发模式二:跨团队协作



岳不群给令狐冲分配了一个任务(去研发一下《葵花宝典》),可是令狐冲不会啊,令狐冲就找东方不败来帮忙开发。但是东方不败不是他们公司的人,只能采用跨团队协作。

  1. 东方不败fork了岳不群的远程库,复制了一份新的远程库,这个新的远程库与原来的远程库内容完全一样,区别只是在于原来的远程库是属于岳不群的,现在这个远程库是属于东方不败的。
  2. 既然现在的新的远程库属于东方不败东方不败就可以克隆、修改、推送了
  3. 然而这个修改的只是东方不败的远程库,岳不群的远程库没有修改
  4. 所以东方不败需要去发起一个pull request(也就是一个拉取的请求)
  5. 岳不群需要对东方不败发起的拉取请求来做一个审核,审核通过后就能在线做一个合并的操作,合并到岳不群自己的远程库里面
  6. 岳不群和令狐冲就能从这个远程库里面拉取内容到本地库了

像开源项目这种,开发成员分布在世界各地的,就需要这种工作方式。

1. 账号信息

GitHub 首页就是注册页面:https://github.com/

姓名 Email地址 GitHub账号
岳不群 atguigu2018ybuq@aliyun.com atguigu2018ybuq
令狐冲 atguigu2018lhuc@aliyun.com atguigu2018lhuc
东方不败 atguigu2018east@aliyun.com atguigu2018east

2. 创建远程库





一般不勾选readme,避免与本地冲突

3. 创建远程库地址别名

git remote -v 查看当前所有远程地址别名

git remote add [别名] [远程地址]

4. 推送

git push [别名] [分支名]

推送需要输入账号和密码:

5. 克隆

git clone [远程地址]

效果

  • 完整的把远程库下载到本地
  • 创建 origin 远程地址别名
  • 初始化本地库

6. 团队成员邀请





“岳不群”其他方式把邀请链接发送给“令狐冲”,“令狐冲”登录自己的 GitHub 账号,访问邀请链接。

7. 拉取

  • pull=fetch+merge
  • git fetch [远程库地址别名] [远程分支名]
  • git merge [远程库地址别名/远程分支名]
  • git pull [远程库地址别名] [远程分支名]

8. 解决冲突

要点

  • 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。
  • 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。

类比

  • 债权人:老王
  • 债务人:小刘
  • 老王说:10 天后归还。小刘接受,双方达成一致。
  • 老王媳妇说:5 天后归还。小刘不能接受。老王媳妇需要找老王确认后再执行。

9. 跨团队协作

Fork

本地修改,然后推送到远程

Pull Request

对话



审核代码

合并代码





将远程库修改拉取到本地

10. SSH 登录

# 进入当前用户的家目录
$ cd ~ # 删除.ssh 目录
$ rm -rvf .ssh # 运行命令生成.ssh 密钥目录 [注意:这里-C 这个参数是大写的 C]
$ ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com # 进入.ssh 目录查看文件列表
$ cd .ssh
$ ls -lF # 查看 id_rsa.pub 文件内容
$ cat id_rsa.pub # 复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys
# New SSH Key
# 输入复制的密钥信息
# 回到 Git bash 创建远程地址别名
git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git # 推送文件进行测试

查看官方框架

有时候我们不知道一些框架的使用方法,我们可以查一查。

一般是在 github 上面搜,看wiki,就可以知道官方的使用方法了。

【Git】GitHub的更多相关文章

  1. 【Git】GitHub for Windows使用(3) GitHub Flow的使用

    第三章了,关于GitHub上有一个Pull Request,是展示本项目或资源所有的Pull 请求的. 而这个开发流程是基于GitHub Flow的开发模式. 网上关于GitHub Flow简单的介绍 ...

  2. 【Git】GitHub for Windows使用(1)

    目录 1.下载GitHub for windows 客户端 2.注册GitHub 3.启动windows端客户端,登录帐号 4.了解Git客户端,从而了解Git的大体功能 5.创建一个新的资源库  6 ...

  3. 【GIT】Github上传本地代码详解

    本教程结合Github服务端和客户端完成本地代码上传至Github,下面进行详细讲解: 1.创建Github账号,这一个步骤应该不用太多解释,直接上官网进行注册登录即可https://github.c ...

  4. 【Git】GitHub之多人开发一个项目

    首先我们要简单知道github跟Git的区别.git是版本控制工具, github是一个面向开源及私有软件项目的托管平台,也是程序员交流的地方. 接下来就开始讲怎么多人一起开发. 首先我们先拥有git ...

  5. 【Git】GitHub for Windows使用(2) 分支

    目录 1.回看客户端相关功能 2.新建一个分支 3.在新分支上修改文件 4.上传新建分支上的修改,并合并分支 5.删除分支 1.回看客户端相关功能 看看设置中的以下内容 2.新建一个分支 3.在新分支 ...

  6. 【Git】GitHub的SSH提交配置[

    Git可以通过https方式和ssh方式连接服务器上的仓库. 两者比较: 1.https: 比较方便,但是每次fetch和push代码都需要输入账号和密码,略显麻烦 2.ssh: 传输前压缩数据,传输 ...

  7. 【git】Github上面的开源代码怎么在本地编译运行

    最近才发现Github是一个好东西,可以从上面学到很多东西,不说了,赶快写完去学习去... 1.首先你可以看看这个开源项目的README.md,一般一般这里都会有项目的使用方式以及一些注意的点 2.你 ...

  8. 【git】删除某个文件的所有历史记录,批量删除远程分支

    删除git某个文件的所有历史记录 git的目的就是版本控制,记录每一个版本的变动.然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中.例如不小心上传了一堆错误的文件,或者不小心上 ...

  9. 【Git】远程分支

    [Git]远程分支 转载:https://www.cnblogs.com/yangchongxing/p/10239270.html 目录 ============================ 1 ...

  10. 【Git】 GitLab简单使用

    本例介绍简单实用GitLab,安装请参照[Git] GitLab服务器社区版安装与配置 1.用户和组的管理 a.创建组,在首页点击Create a group b.创建用户,在首页点击Add peop ...

随机推荐

  1. Windows下的GDAL环境配置

    Windows下的GDAL环境配置 在Windows下GDAL环境的配置方式有很多种,我尝试了很多不同的配置方式,包括Anaconda. GISInternals.QGIS.OSGeo4W等, 我这里 ...

  2. MTK8766 LK GPIO初始化状态设置分析

    问题来源是M.2 Dongle的LED灯在kernel起来之前就亮了,kernel起来之后又初始化成熄灭状态.通过排查硬件规格书.GPIO表格,大概判定是前期软件初始化不正确造成的.通过观察串口打印的 ...

  3. 一款简单易用的印章设计工具 --(可转为ofd文件)

    本人开发了一款印章设计软件:不但可以将印章保存为图片,而且可以保存为ofd格式文件. 将印章保存为ofd格式,有很多优势:占用资源少.缩放不失真.可添加元数据. 矢量化图形格式一般为svg.pdf.很 ...

  4. CDS标准视图:功能位置种类描述 I_FlocCategoryText

    视图名称:功能位置种类描述 I_FlocCategoryText 视图类型:基础 视图代码: 点击查看代码 @EndUserText.label: 'Functional Location - Tex ...

  5. biancheng-Hibernate框架

    目录http://c.biancheng.net/hibernate/ 1ORM是什么2Hibernate是什么3Hibernate项目创建流程4Hibernate增删改查操作5Hibernate工作 ...

  6. 【TCP协议】---协议详解

    TCP协议 本文内容如下:      1)TCP协议概念      2)TCP头部结构和字段介绍      3)TCP流量控制            滑动窗口      4)TCP拥塞控制      ...

  7. 通过Nginx反向代理配置/.well-known/pki-validation/fileauth.txt步骤实例

    最近在某云平台上申请了SSL证书(https),SSL证书申请或者续期过程中需要进行域名验证. 如果域名验证类型选择[文件]方式,等你提交申请后,要在目标域名对应的服务端上传一个文件(通常是一个.tx ...

  8. selenium等待的三种方式(详细)

    1.强制等待 time.sleep(3) 这种方式会是操作强行等待3s才会进行下一步操作,但是这种放法,可能会延长测试的时间,如果元素在1s中出现,就会浪费2s的时间,并且这种放法单次有效,每次需要等 ...

  9. The Communication Complexity of Threshold Private Set Intersection-2019:解读

    记录阅读论文的笔记. 什么是阈值PSI? Alice和Bob当两者的交集大小不小于\(n-t\)时(两者的不同元素的数量不大于阈值\(2t\)时),才会求交集. 所以阈值PSI会分为两步: 1.检测 ...

  10. Python更换下载源:提升包安装速度的实用指南

    Python更换下载源:提升包安装速度的实用指南 Python作为一门广泛使用的编程语言,其强大的生态系统和丰富的第三方库是吸引众多开发者的关键因素之一.然而,在使用pip安装这些第三方库时,由于网络 ...