(03)GitHub基础知识和操作

  一、GitHub基础知识

  1、地址

  https://github.com

  2、创建远程库

  点击加号,点击New repository创建远程库

  Owner:仓库所属人

  Repository name:仓库名

  Description:描述

  Public:仓库类型是公有的,所有人都可以看到,你可以选择谁能提交。

  Private:仓库类型是私有的,可以选择谁能看到,谁能提交,但是收费。

  3、查看远程库地址

  远程库有两种地址,https格式和ssh格式

  二、关于GitHub的命令

  1、基础命令

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

  git remote add [别名] [远程地址] :新增别名,远程库的地址比较长,所以设置一个别名

  git push [别名] [分支名]

  示例:将本地库的testaaa.txt文件推送到远程库。

  git clone [远程地址]:克隆远程库

  演示:首先找到远程地址,然后执行克隆命令。

  注意:clone命令有三个效果

  完整的把远程库下载到本地

  创建origin 远程地址别名

  初始化本地库 

  2、邀请成员加入团队

  上面演示了另外一个成员clone下了仓库,他修改后是不能推送到远程仓库的,因为没有权限,看下图:

  下面贴出邀请步骤:

  被邀请人会收到邮件:

  被邀请人收到邮件后复制红框框起来的地址,登录GitHub后粘贴到地址栏:在相应位置点击接受,变成了团队成员。

  变成团队成员后再次推送到GitHub,成功。

  git pull [远程库地址别名] [远程分支名]:拉取操作,从远程库获取文件,并且合并到本地库。相当于,pull=fetch+merge

  git fetch [远程库地址别名] [远程分支名]:获取远程文件操作,获取后,本地库读到的还是之前的内容,因为并没有合并。

  git merge [远程库地址别名/远程分支名]:合并操作,远程库的内容合并到本地库。

  演示:alei1234将修改后的内容推送到GitHub后,切换回wrenlei,执行fetch操作,本地库还是之前的内容

  执行完merge后,本地库内容被合并为新内容:

  如果,alei1234修改后推送到远程库,wrenlei直接执行merge操作,不会读取到远程库新内容,必须先fetch。

  直接使用pull命令

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

  示例:现在wrenlei先修改、推送到远程库,然后alei1234不拉取,然后修改、推送到远程库,冲突失败。

  现在解决冲突,alei1234先拉取,解决冲突后一定git add、git commit 不加文件名 ,然后推送。

  3、跨团队协作操作

  新账号leishen1234作为团队外的一员,现在想

  (1)wrenlei登录GitHub,复制仓库地址,发给leishen1234,https://github.com/wrenlei/testcangku1.git

  (2)leishen1234登录GitHub,复制地址到地址栏粘贴,

  (3)leishen1234从他的远程库clone一份,修改后推送到远程库。

  (4)leishen1234执行 Pull Request操作,可以提交说明。

  (5)wrenlei登录GitHub,查看leishen1234发送过来的代码

   审核代码,查看修改了什么。

   合并代码,最下面的评论或者留言会发送邮件

  (6)wrenlei可以在本地拉取文件了

  4、SSH免密登录 

  GitHub的仓库地址提供两种方式,一种是http,另一种是SSH,http每天推送都会填写用户名、密码。SSH可以通过配置免去填写。只能为一个账号设置。

  (1)进入当前用户的家目录

  (2)删除.ssh 目录

  (3)运行命令生成.ssh 密钥目录(ssh-keygen -t rsa -C 邮箱)注意:这里-C 这个参数是大写的C

  (4)进入.ssh 目录查看文件列表

  (5)查看id_rsa.pub 文件内容

  (6)复制id_rsa.pub 文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys

  (7)点击New SSH Key

  测试:需要重启起一个别名,用ssh的地址。

  下图可以看到测试成功。

  

   

  

原文地址:https://www.cnblogs.com/javasl/p/12589546.html