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. 记录下uniapp的请求封装

    请求封装就是经常见的事但是从来没有记录过,今天来记录一下简单的封装 首先封装自己的域名,可以和封装写在一起,但是最好单独写一个独立的js文件 这边就以一个域名为例 let baseUrl='域名地址' ...

  2. Canvas简历编辑器-选中绘制与拖拽多选交互方案

    Canvas简历编辑器-选中绘制与拖拽多选交互方案 在之前我们聊了聊如何基于Canvas与基本事件组合实现了轻量级DOM,并且在此基础上实现了如何进行管理事件以及多层级渲染的能力设计.那么此时我们就依 ...

  3. get Toutiao.com news list

    .get cookie with your browser then can do using System; using System.Collections.Generic; using Syst ...

  4. rabbitmq部署及配置与验证-copy

    1. 场景描述 朋友项目需要弄个测试环境,稍微帮忙了下,系统不复杂,但是需要自己安装mysql.Reids.Es.RabbitMq等,Mq主要用在同步用户信息与发送站内消息和短信上,RabbitMq以 ...

  5. Spring Security 基于JWT的单点登陆(SSO)开发及原理解析

    JDK1.8Spring boot 2.xSpring Security 5.x 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一. SSO的定义是在 ...

  6. Hadoop 概述(二)

    shell定时上传linux日志信息到hdfs 从标题可以分析出来,我们要使用到shell,还要推送日志信息到hdfs上. 定义出上传的路径和临时路径,并配置好上传的log日志信息.这里我使用了上一节 ...

  7. Java中的值类型

    在打算了解Java的时候,根据C#的经验,了解一下Java中有哪一些值类型,如何判断某个类型为值类型还是引用类型是一件值得做的事情. 在C#中,值类型存放在栈中,不需要垃圾回收,引用类型存放在堆中,需 ...

  8. HElib

    什么是HElib? HElib是一个基于C++语言的同态加密开源软件库,底层依赖于NTL数论运算库和GMP多精度运算库实现,主要开发者为IBM的Halevi,目前最新版本为1.0.2,实现了支持&qu ...

  9. XLSReadWriteII5的使用示例

    procedure TForm1.Button1Click(Sender: TObject); var i, n: Integer; XLS: TXLSReadWriteII5; // 引用XLSRe ...

  10. Centos 7 安装Redis5 详细步骤 备忘录笔记

    通过wget下载tar包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 解压包 tar -zxvf redis-5.0.5.tar ...