文章目录

  • 一、前言
  • 二、使用GitHub进行代码托管的相关操作
    • 1、推送本地仓库内容至远程仓库
    • 2、克隆远程仓库内容至本地仓库
    • 3、邀请他人加入项目团队
    • 4、拉取远程仓库修改的内容
    • 5、解决协同开发时产生的冲突
    • 6、跨团队协作开发
    • 7、GitHub设置SSH Key,实现SSH免密登录
      • 7.1、什么是密钥
      • 7.2、设置SSH Key

一、前言

  在上一篇文章中已经对Git相关命令的介绍与使用进行了讲解,下面正式进入到使用GitHub进行代码托管的相关操作的讲解。

二、使用GitHub进行代码托管的相关操作

1、推送本地仓库内容至远程仓库

1.1、登录GitHub,点击右上角的"+",选择New repository,创建一个新的仓库

1.2、进入到新建仓库页面,填写仓库的相关信息,点击Create repository按钮,创建远程仓库

1.3、创建好远程仓库之后,会进入到GitHub的操作提示页面,同时页面也会给出远程库的地址(有Https和SSH两种类型的地址)

1.4、在我们本地创建一个名为git-test的文件夹,并初始化使其成为Git本地仓库 (注意:本地仓库名称可以与远程仓库名称不一致,这里只是为了好区分,所以才命名一致)

1.5、新建一个data.txt文件,并在文件中添加一些内容,然后提交至本地仓库

1.6、在本地创建远程仓库地址的别名,由于远程仓库的地址太长,写起来太麻烦,所以我们可以为远程仓库地址设置一个别名,之后就可以直接使用别名来替代远程仓库地址

//查看地址映射
git remote -v//添加地址别名映射
git remote add 别名 远程仓库地址

1.6.1、点击复制按钮,复制远程仓库地址

1.6.2、添加远程仓库地址别名映射

可以看到有两个相同的远程仓库地址别名映射,只是括号后面的内容不一致

  • origin https://github.com/lemon-wubin/git-test.git (fetch):表示用来拉取远程仓库的内容到本地仓库时使用的地址

  • origin https://github.com/lemon-wubin/git-test.git (push):表示用来推送本地仓库内容到远程仓库时使用的地址

1.7、推送本地仓库内容至远程仓库

git push 远程仓库地址别名 本地仓库分支名

1.7.1、执行推送命令后,需要输入GitHub的用户名和密码进行验证,才能推送至远程仓库

1.7.2、推送成功,并查看GitHub远程仓库


2、克隆远程仓库内容至本地仓库

2.1、在我们本地另外创建一个名为git-clone的文件夹,并进入到git-clone文件夹下

2.2、复制远程仓库地址

2.3、克隆远程仓库内容至本地

git clone 远程仓库地址


可以看到,我们把远程仓库中的内容克隆到了我们本地,同时克隆操作也帮我们初始化了本地仓库添加了远程仓库地址别名映射

3、邀请他人加入项目团队

3.1、我们修改本地git-clone/git-test仓库下的data.txt文件,在data.txt文件中添加一行新的内容,并提交到本地仓库

3.2、我们使用另外一个名为lemon-jackGitHub账号进行远程提交

由于在演示推送本地仓库内容至远程仓库时,我们使用了名为lemon-wubinGitHub账号登录并成功推送至远程仓库,这时Windows10操作系统会自动帮我们记住GitHub的用户名和密码,下次再推送时就会自动登录,而不需要我们再次输入GitHub的用户名和密码,为了演示用另外一个名为lemon-jackGitHub账号进行远程提交操作,我们需要删除Windows10操作系统凭据管理器中的GitHub的账号信息,重新使用其他的GitHub账号来进行登录

3.2.1、鼠标右键此电脑或者我的电脑,选择属性(R)进入到Windows10系统页面,并点击左上角的控制面板主页,进入到控制面板页面

3.2.2、进入到控制面板页面之后,点击右上角的类别选项,将类别切换成小图标

3.2.3、以小图标的方式进行查看之后,找到凭据管理器并点击,进入到凭据管理器页面

3.2.4、选择Windows 凭据,找到GitHub账号信息凭据,并点击删除即可

3.2.5、使用另外一个名为lemon-jackGitHub账号进行远程提交

3.2.6、提示名为lemon-jackGitHub账号,不能访问我们的远程仓库地址

这是因为其他人在未被加入到项目团队之前,是无法推送本地仓库内容至远程仓库,因为远程仓库是仓库拥有者创建的,所以其他人没有相关的权限,但仓库拥有者可以邀请其他人加入到项目团队,这样其他人就拥有了推送操作的权限。接下来我们来操作如何邀请他人加入项目团队。

3.3、在我们的git-test远程仓库页面中,点击Settings选项

3.4、点击Collaborators选项,输入被邀请人的GitHub账号的用户名,最后点击Add collaborator按钮

3.5、点击Copy invite link按钮,复制邀请链接,然后发送给被邀请人 (其实在我们上一步点击Add collaborator按钮时,GitHub会自动把邀请链接已邮箱的形式发送给被邀请人)

3.6、被邀请人登录到自己的GitHub账号后,访问邀请人 (即:远程仓库拥有者) 发送过来的邀请链接,然后点击Accept invitation按钮,接收邀请即可

3.7、我们再次使用名为lemon-jackGitHub账号,进行推送操作,推送成功

4、拉取远程仓库修改的内容

//pull(拉取)操作其实是fetch(抓取)和merge(合并)两个操作的合并,先fetch再merge
git pull 远程仓库地址别名 远程仓库分支名等价于git fetch 远程仓库别名 远程仓库分支名
git merge 远程仓库别名/远程仓库分支名 (需要先切换到被合并的分支)

4.1、上一步我们已经把修改的内容推送到了远程仓库,接下来我们来拉取远程仓库修改的内容,此时我们所在位置是git-clone/git-test仓库下,我们先进入到另外一个git-test仓库下

4.2、拉取远程仓库修改的内容

5、解决协同开发时产生的冲突

接下来我们就来模拟在协同开发时,如何解决产生的冲突

5.1、当前我们处于git-test仓库下,我们修改仓库下的data.txt文件,并提交到本地仓库

5.2、使用名为lemon-wubinGitHub账号,进行推送操作 (记得删除凭据管理器中的GitHub的账号信息),推送成功

5.3、此时我们所在位置是git-test仓库下,我们先进入到git-clone/git-test仓库下,修改仓库下的data.txt文件,并提交到本地仓库

5.3、使用名为lemon-jackGitHub账号,进行推送操作 (记得删除凭据管理器中的GitHub的账号信息)

可以看到一条提示信息error: failed to push some refs to 'https://github.com/lemon-wubin/git-test.git',我们推送至远程仓库失败了,这是因为在lemon-jack用户之前,lemon-wubin用户已经把他的修改提交到了远程仓库中,而lemon-jack用户所进行的一系类操作,并不是基于GitHub远程仓库的最新版本所做修改的,所以GitHub禁止我们推送,所以我们需要先拉取远程仓库最新版本的内容到本地,然后再做相应的修改,最后推送至远程仓库。

5.4、拉取远程仓库最新版本的内容到本地

从上图可以看到一条提示信息Automatic merge failed; fix conflicts and then commit the result.,系统告诉我们拉取远程仓库最新版本的内容失败了,原因是lemon-jack用户与lemon-wubin用户对data.txt文件的同一处地方都做了修改,Git拿不定主意。

5.4、手动解决冲突,使用Vim编辑器打开产生冲突的data.txt文件,显示的内容如下所示:

<<<<<<< HEAD=======之间的内容是我们当前本地仓库的内容,而=======>>>>>>> 60978c99fdfbd50efe0de22f351ea1c01c71c519之间的内容是远程仓库的内容,我们将data.txt文件的内容修改成我们想要的内容,同时删除<<<<<<< HEAD=======>>>>>>> 60978c99fdfbd50efe0de22f351ea1c01c71c519,修改完成之后的内容为:

5.5、重新将data.txt文件提交到暂存区,然后提交到本地仓库中

这样,冲突就被我们给解决了,不过需要注意的是,以往我们在进行提交操作时,都习惯在提交命令后带上文件名,即:git commit -m "提交信息" filename,但是在进行冲突的提交时,是不能够带上文件名的,即:git commit -m "提交信息",不然会提示:fatal:cannot do a partial commit during a merge.的错误信息,这点需要特别注意。

5.5、最后再次使用名为lemon-jackGitHub账号,进行推送操作 (记得删除凭据管理器中的GitHub的账号信息),推送成功

6、跨团队协作开发

在实际的开发项目中,有些项目功能公司团队内部人员无法实现,但是公司外的团队成员能够实现这一功能,这时我们就需要跨团队协作开发,接下来我们就来模拟跨团队协作开发

6.1、复制远程项目地址,发送给公司外名为lemon-john的团队成员

6.2、lemon-john成员登录到GitHub,并访问该远程项目地址,然后点击Fork按钮(是以lemon-john成员的身份点击Fork按钮),拷贝一份到自己的GitHub远程仓库下

6.3、进入到Forking中,可以看到此时的仓库拥有者为lemon-john,同时指出了fork 来源自lemon-wubin/git-test

6.4、复制lemon-john成员fork下来的远程仓库地址

6.5、在本地新建一个git-team的文件夹,并克隆lemon-john成员fork下来的远程仓库内容到git-team文件夹下

6.6、进入到git-team/git-test目录下,修改data.txt文件,并提交到本地仓库

6.7、使用名为lemon-johnGitHub账号,推送到lemon-john用户的GitHub远程仓库中

6.8、点击Pull requests选项,然后再点击New pull request按钮,发起Pull requests请求

6.9、点击Create pull request按钮,同时可以看到红色方框中,文件内容的改动情况

6.10、发起Pull requests请求通知,输入请求通知的标题和正文内容,最后点击Create pull request按钮

6.11、使用名为lemon-wubin的公司团队内部人员登录到GitHub,点击Pull requests选项,查看lemon-john成员发起的Pull requests请求通知

6.12、同时lemon-wubin成员也可以回复lemon-john成员发送过来的Pull requests请求通知消息

6.14、审核lemon-john成员提交和修改的内容

点击Commits选项,查看提交了哪些内容

点击Files changed选项,查看具体修改的内容

6.15、审核通过之后,点击Conversation选项,然后点击Merge pull request按钮,进行合并操作

6.16、添加合并操作日志,点击Confirm merge按钮进行合并

6.17、此时我们所在位置是git-team/git-test仓库下,我们进入到git-test仓库下,拉取远程仓库合并后的最新内容

7、GitHub设置SSH Key,实现SSH免密登录

在使用远程仓库的HTTPS地址进行推送操作时,由于Windows10系统凭据管理器会自动帮我们记录GitHub的账号信息,所以每次在进行远程推送操作时,我们不需要输入GitHub账号的用户名和密码 (首次推送时,我们需要输入GitHub账号的用户名和密码),但是其他系统有可能没有凭据管理器,所以每次我们使用远程仓库的HTTPS地址进行推送操作时,都需要输入GitHub账号的用户名和密码,但是我们可以为远程仓库的SSH地址设置SSH Key,实现免密登录,接下来我们就来为GitHub设置SSH Key,实现SSH免密登录

7.1、什么是密钥

    密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥又分为对称密钥与非对称密钥,对称密钥加密又称私钥加密或会话密钥加密算法,非对称密钥加密系统又称公钥密钥加密。

7.2、设置SSH Key

7.2.1、首先进入到用户的家目录 (即:~) 下,并删除.ssh/目录

7.2.2、使用如下命令生成SSH Key,在生成SSH Key的过程中,需要我们确认相关信息,直接一路按下回车键即可

ssh-keygen -t rsa -C "GitHub邮箱地址"

7.2.3、进入到.ssh/目录下,查看生成的id_rsa.pub文件 (公钥) 和 id_rsa文件 (私钥)

7.2.3、查看生成的id_rsa.pub文件 (公钥)内容,并复制id_rsa.pub文件中的内容,注意:复制id_rsa.pub文件中的内容时,内容开头或者末尾不要包含多余的空格

7.2.4、登录到GitHub上,点击右上角的头像,并点击Settings选项,进入到设置页面

7.2.5、进入到设置页面之后,点击SSH and GPG keys选项,然后点击New SSH key按钮,添加SSH key

7.2.6、填写标题,并把之前复制id_rsa.pub文件中的内容粘贴到Key文本框中,然后点击Add SSH key按钮

7.2.7、输入GitHub账号的密码,并点击Confirm password按钮

7.2.8、添加SSH key成功

7.2.9、测试SSH key是否配置成功,我们在Git终端输入ssh -T git@github.com命令,这时它会问我们是否确定要继续连接吗,这是我们输入yes,表示确定继续连接

当看到有Hi lemon-wubin! You've successfully authenticated, but GitHub does not provide shell access.的提示信息时,则表示GitHub设置SSH Key成功。如果配置失败,请使用ssh -vT git@github.com命令查看具体出错信息,然后排查问题。

Git入门与使用系列文章列表:

Git入门与使用 (一) Git介绍与安装
Git入门与使用 (二) Git相关命令的介绍与使用
Git入门与使用 (三) 使用GitHub进行代码托管的相关操作
Git入门与使用 (四) IDEA集成Git,并通过图形化界面进行Git相关操作
Git入门与使用 (五) GitLab介绍与安装

Git入门与使用 (三) 使用GitHub进行代码托管的相关操作相关推荐

  1. 《自然语言处理实战入门》 第三章 :中文分词原理及相关组件简介 ---- 语言学与分词技术简介

    文章大纲 0.内容梗概 1. 汉语语言学简介 1.1 汉语与汉字的起源 1.2 汉字的统一与演变 1.3 印欧语系与汉藏语系 1.4 语言区别对于NLP 的影响 2. 词汇与分词技术简介 2.1 汉语 ...

  2. 《自然语言处理实战入门》第三章 :中文分词原理及相关组件简介---- 汉语分词领域主要分词算法、组件、服务(下)

    文章大纲 0.内容梗概 3. NLP 云厂商 3.1 百度语言处理基础技术 简介 特点 .服务范围 调用样例 3.2 PaddleNLP 3.3 腾讯NLP 简介 特点.服务范围 调用样例 3.4 阿 ...

  3. 《自然语言处理实战入门》第三章 :中文分词原理及相关组件简介 ---- 工业级词法分析组件百度LAC2.0

    文章大纲 简介 工具介绍 安装与使用 安装说明 功能与使用 分词 词性标注与实体识别 定制化功能 增量训练 1. 分词训练 2. 词法分析训练 文件结构 效果 原理 参考文献 简介 LAC全称Lexi ...

  4. 《自然语言处理实战入门》第三章 :中文分词原理及相关组件简介 ---- 序列标注(词性标注)

    文章大纲 序列标注 词性标注 参考文献 识别序列中的人名.地名.组织机构名等实体.属于序列标注问题. 序列标注的几种模式 在序列标注中,我们想对一个序列的每一个元素(token)标注一个标签.一般来说 ...

  5. 《自然语言处理实战入门》第三章 :中文分词原理及相关组件简介 ---- 汉语分词领域主要分词算法、组件、服务(上)

    文章大纲 0.内容梗概 1. 基于传统统计算法的分词组件 1.1 hanlp : Han Language Processing 1.1.1 pyhanlp 安装 1.1.2 功能及分词样例 1.1. ...

  6. GitHub 启动代码永久保存计划,为人类文明留“火种”?

    一句话新闻 GitHub 宣布,为了把开源软件留给子孙后代,将在 2020 年 2 月 2 日为所有公共存储库生成快照,保存在北极一个地下 250 米的废弃煤矿,快照储存在胶片上,寿命高达 1000 ...

  7. 代码托管从业者 Git 指南

    本文作者:李博文 - CODING 后端开发工程师 前言 六七年前,我机缘巧合进入了代码托管行业,做过基于 Git 支持 SVN 客户端接入.Git 代码托管平台分布式.Git 代码托管读写分离.Gi ...

  8. git 代码托管使用方法

    Git代码托管 1 准备材料 在coding,github这些代码托管网站上申请一个账户. Linux平台什么需要一个git,如ubuntu 需要 $ sudo apt-get install git ...

  9. git代码托管 · 操作举例: “git bash here ”(全程操作讲解) - git命令篇

    如何通过git进行代码托管?怎么操作?全程讲解说明,以git bash here为例. git使用案例:git代码托管: "git bash here "(全程操作讲解) 代码托管 ...

最新文章

  1. SSISDB6:参数和环境变量
  2. linux内核那些事之mmap_region流程梳理
  3. ubuntu server 14.10 安装 nodejs
  4. 【鲲鹏来了】鲲鹏迁移过程案例分享
  5. SpringMvc-HandlerMapping/RequestCondition
  6. 亲密关系-【认知情绪】-每一次生气的背后有什么
  7. Linux常用软件包
  8. maven(2)——修改maven的setting.xml文件,更改下载地址和镜像
  9. c++ IO多路复用
  10. zabbix部署+grafana7.2采集数据(时下新版)
  11. 图像处理中,在图片上写字,包括中文与英文!
  12. android 红包功能,[原创]实现某app的抢红包功能
  13. 仿天猫 购物车(Android studio 仿天猫 详情页面 添加购物车选择 颜色 尺寸demo)
  14. E签宝的接口对接PHP代码演示
  15. 转:python各种库
  16. 7-10 阿生的粉丝团 (30 分)
  17. 安装mysql单机版
  18. mysql n8_mysql几种引擎和使用场景
  19. c语言复制粘贴快捷键_windows复制粘贴快捷键,windows系统复制粘贴快捷键
  20. Spring boot 用mybatis连接数据库

热门文章

  1. 缺乏对员工的培训的教训和改进措施
  2. 树状数组(尽量详细了)
  3. 一年前的王信文谈《刀塔传奇》(下)
  4. 批量爬取app小视频
  5. linux 日志回滚,Linux 下的日志回滚机制探讨
  6. 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较
  7. PHP基础-字符串长度函数
  8. 基于直流电机MATLABGUI设计
  9. 荣耀v40首发鸿蒙,荣耀V40正式发布 首发3分46秒线上全部售罄
  10. 36Kr季报图解:营收5553万元同比增12% 净亏3900万