7、Git之Github操作
7.1、注册Github账号
7.1.1、访问官网
Github 官网:https://github.com/
先访问GitHub的官网首页,点击 sign in (登录),跳转到登录页。
7.1.2、进入登录页
因为目前还没有GitHub的账号,所以先注册一个账号。
7.1.3、填写注册信息
输入邮箱、密码和用户名。
同意接收相关邮件。
7.1.4、注册验证
输入发送到注册邮箱中的验证码。
7.1.5、登录个人主页
注册成功后,会自动跳转到个人主页。
7.1.6、演示账号
账号 | 姓名 | 邮箱 |
---|---|---|
lb-liao | 刘备 | lb_liaojy@163.com |
km-liao | 孔明 | km_liaojy@163.com |
zy-liao | 周瑜 | zy_liaojy@163.com |
出于演示效果需要,本文使用了三个 GitHub 账号(见上表)。
7.2、创建远程仓库
如上图所示,即将创建一个名为 kfhs 的远程仓库;因为在 lb-liaojy 账号的名下还没有这个名字的仓库,所以可以使用仓库名。
此外,还设置了该仓库的分类为 public (GitHub的默认分类),表示是公共仓库,读权限是完全放开的;与之相反的是私有仓库 private 。
如上图所示,设置完仓库名称和类型后,即可点击“Create repository”按钮,从而创建一个仓库。
如上图所示,就是刚创建仓库成功后,什么项目内容都还没有的样子,但我们可以看到该远程仓库的 HTTPS 链接。
7.3、命令速查表
命令 | 作用 |
---|---|
git remote -v | 查看已设置的所有远程地址别名 |
git remote add 别名 远程地址 | 为一个远程地址设置别名 |
git push 别名 分支名 | 推送本地仓库某分支的内容到远程仓库 |
git pull 远程库地址(别名) 远程分支名 | 将远程仓库某分支的更新内容拉取到本地仓库 |
git clone 远程仓库地址 | 将远程仓库克隆到本地 |
7.4、远程仓库的别名
7.4.1、创建一个本地库
注意:本地仓库名称和远程仓库名称,最好是相同的。
7.4.2、查看远程仓库的别名列表
如上图所示,别名列表为空,表示目前还没为任何远程仓库设置别名。
git remote -v
7.4.3、设置远程仓库的别名
如上图所示,为远程仓库地址 https://github.com/lb-liaojy/kfhs.git 设置了一个别名 kfhs
git remote add 别名 远程地址
注意:远程仓库地址的别名,最好和远程仓库名称相同。
7.4.4、确认刚设置的远程仓库别名
如上图所示,一个别名会对应远程仓库地址的两种类型,分别用于拉取(fetch)和推送(push)。
注意:每个本地仓库都有自己的远程仓库别名列表,相互独立,互不影响。
7.5、推送本地库到远程库
7.5.1、在本地库新增内容
如上图所示,在本地库新增了一个 plan.txt 文件,其内容为“匡扶汉室”。
7.5.2、查看凭据管理器
如上图所示,目前还没有 GitHub 账号的相关凭据。
7.5.3、推送本地库的master分支到远程库
如上图所示,往远程仓库推送内容,需要登录具备相应权限的 GitHub 账号。
因为已在浏览器中登录了 GitHub 账号,所以可以直接点击“Sign in with your browser”按钮,跳转到浏览器页面进行授权。
如上图所示,点击“Authorize git-ecosystem”按钮,即可将浏览器中的 GitHub 账号登录状态,同步到 Windows 系统中。
如上图所示,已成功推送本地库的master分支到远程库。
7.5.4、确认凭据管理器
如上图所示,Windows系统已记录了 GitHub 的登录凭据,这样以后就不需要再次授权,可以直接往远程仓库推送内容。
7.5.5、查看远程库
如上图所示,本地库master分支的内容,已成功推送到远程库。
7.6、拉取远程库到本地库
7.6.1、在线直接修改远程库的内容
如上图所示,点击需要修改的文件。
如上图所示,打开需要修改的文件后,点击编辑。
如上图所示,修改完文件内容后,点击提交按钮。
如上图所示,在提交弹窗中,填写提交描述后,点击提交按钮。
如上图所示,已成功在线直接修改远程库的内容。此时,远程库和本地库的内容已不一致,因此本地库需要从远程库中,拉取更新的内容。
7.6.2、将远程库的更新内容拉取到本地库
如上图所示,已成功将远程仓库master分支的更新内容拉取到本地仓库。
git pull 远程库地址(别名) 远程分支名
7.6.3、查看拉取的更新内容
如上图所示,本地库的内容,与远程库的内容,已经同步了。
注意:pull(拉取)命令,会自动将远程分支的更新内容,提交到本地库;因此本地库不用再执行 git add 和 git commit 命令。
7.7、克隆远程库到本地库
7.7.1、删除GitHub账号的凭据
如上图所示,删除了 GitHub 账号的凭据。这样做的原因是,为了证明克隆远程库到本地库,不需要权限。
7.7.2、复制远程库地址
7.7.3、将远程库克隆到本地库
如上图所示,已成功将远程库克隆到本地。
git clone 远程仓库地址
注意:由于GitHub是国外的网站,所以有时会因为网络问题,而产生下面的报错信息;一般多试几次就能解决。
fatal: unable to access 'https://github.com/lb-liaojy/kfhs.git/': Failed to connect to github.com port 443 after 21043 ms: Couldn't connect to server
7.7.4、克隆的三个效果
如上图所示,克隆命令实际产生了三个效果:
初始化本地仓库:创建了和远程仓库同名的文件夹,该文件夹中还有用于版本控制的 .git 子文件夹。
拉取内容:本例为 plan.txt 文件。
创建别名:自动为远程仓库地址创建了别名 origin 。
7.8、团队内协作
7.8.1、修改本地库文件
如上图所示,孔明克隆了刘备的远程库后,在本地库对文件内容做了修改。
7.8.2、推送本地库的更新到远程库(非团队成员)
如上图所示,往远程仓库推送内容,需要登录具备相应权限的 GitHub 账号。
因为已在浏览器中登录了 GitHub 账号,所以可以直接点击“Sign in with your browser”按钮,跳转到浏览器页面进行授权。
注意:出于演示需要,浏览器现在登录的是孔明的账号。
如上图所示,点击“Authorize git-ecosystem”按钮,即可将浏览器中的 GitHub 账号登录状态,同步到 Windows 系统中。
注意:出于演示需要,浏览器现在登录的是孔明的账号。
如上图所示,孔明往(刘备的)远程库推送本地库的更新失败,因为此时孔明还没有往(刘备的)远程库的推送权限。
7.8.3、邀请合作者加入团队
如上图所示,在该远程库的 Settings 的 Collaborations 中,点击“add people”按钮,即可查找想要邀请的合作者。
如上图所示,通过搜索孔明的 GitHub 账号名称,即可向其发送合作邀请。
如上图所示,向孔明发送邀请后,还需等待其同意邀请。
7.8.4、同意加入团队的邀请
如上图所示,在孔明的 GitHub 信箱中,能看到刘备发来的邀请。
如上图所示,孔明点击“Accept invitation”按钮,即可加入刘备的团队。
如上图所示,加入刘备的团队后,孔明便有了往刘备的远程库(kfhs)执行 push (推送)命令的权限。
注意:刘备可以有多个远程库,各个远程库可以有不同的团队成员。
7.8.5、推送本地库的更新到远程库(是团队成员)
如上图所示,当孔明成功刘备远程库的团队成员后,便可成功推送本地库的更新到这个远程库。
7.8.6、查看远程库
如上图所示,孔明的本地库更新,已成功推送到刘备的远程库。
注意:此时,刘备本地库和远程库的内容已不一致,因此刘备本地库需要从远程库中,拉取更新的内容。(具体操作见7.6节)
7.9、跨团队协作
7.9.1、查找远程库
如上图所示,通过GitHub顶部的搜索框输入关键词,即可查找相关项目。(能精准匹配的关键词格式:GitHub账号名称/远程库名称)
注意:为演示需要,此时登录的GitHub账号是周瑜的。
7.9.2、复制远程库
如上图所示,在刘备的远程库中,点击“fork”按钮,即可将该远程库复制一份到自己的 GitHub 账号名下。
如上图所示,还可以编辑复制到自己名下的远程库名。
注意:从已自动勾选的可选框可知,默认只复制主分支(master)。
如上图所示,复制来的远程库,会显示复制的源头。
7.9.3、对复制来的远程库进行修改
如上图所示,周瑜成功对复制来的远程库内容做了修改更新;因为该远程库是自己名下的,所以不需要加入刘备的团队,就能拥有写权限。
当然,这样的修改,不会影响到刘备的远程库。
注意:在线直接修改远程库的详细操作过程,可以参考 7.6.1 节。
7.9.4、周瑜发送拉取请求(pr)
如上图所示,创建拉取请求(pull request)时,可以对比两个远程库分支的差异。
如上图所示,发送拉取请求时,会附带拉取请求的标题(默认是提交信息),还可以补充描述。
如上图所示,发送拉取请求成功。
7.9.5、刘备查看拉取请求
如上图所示,刘备看到了周瑜发送的拉取请求。
如上图所示,点击拉取请求的标题,查看周瑜修改的内容。
如上图所示,能看到这个拉取请求中,两个远程库分支的差异对比。
7.9.6、在拉取请求中沟通
如上图所示,刘备能在这个拉取请求中,向周瑜发送消息。
如上图所示,周瑜看到刘备在这个拉取请求中的消息后,也可以回消息。
7.9.7、刘备合并拉取请求
如上图所示,刘备审核过周瑜的拉取请求后,觉得相关修改是有价值的,可以合并到自己的远程库中。
如上图所示,合并拉取请求时,会有确认合并的提示。
如上图所示,已成功合并。
如上图所示,刘备的远程库中,有周瑜的提交信息。
7.10、SSH免密登录
7.10.1、查看远程库的SSH地址
如上图所示,远程库地址除了HTTPS类型的之外,还有SSH类型。
如果使用HTTPS类型的就很简单,基本不需要配置就可以使用,但是每次推送时,都需要用已登录GitHub账号的浏览器授权(或输入用户名和密码)。
SSH类型相比HTTPS类型的一个重要的优点是,只需要配置一次,就不用每次推送时,都重复需要用已登录GitHub账号的浏览器授权(或输入用户名和密码)。当然,前提是必须是该远程库的拥有者或合作者,且配置好了 SSH key (上图显示目前还没配置好 SSH key )。
7.10.2、本地生成SSH密钥
如上图所示,先用 Git Bash 进入本地电脑的当前用户的家目录。
cd
如上图所示,输入生成密钥的命令后,连续按回车即可。
ssh-keygen -t rsa -C GitHub账号邮箱
ssh-keygen:生成SSH密钥的命令。
-t:指定生成SSH密钥的加密算法,rsa 是著名的非对称加密算法。
-C(注意 C 是大写的):用来指定标识邮箱。
注意:如果之前已经生成过SSH密钥,可以执行以下命令删除旧的
removed directory '.ssh'
7.10.3、查看生成的SSH密钥
如上图所示,执行生成密钥的命令后,会有一个“.ssh”的目录,该目录中有私钥文件“id_rsa”和公钥文件“id_rsa.pub”。
cd .ssh/
ll
如上图所示,使用 cat 命令查看公钥文件“id_rsa.pub”中的内容。
cat id_rsa.pub
7.10.4、在GitHub中添加公钥
如上图所示,点击 GitHub 账号用户头像,在侧弹窗中点击进入“Settings”。
如上图所示,在“Settings”中,点击“SSH and GPG keys”,就可以看到“New SSH key”按钮。
如上图所示,将在本地生成的 SSH 公钥复制到 GitHub ,并为其自定义一个标识名称。
如上图所示,已成功在 GitHub 中添加了一个本地电脑生成的公钥。
这样一来,以后在本地电脑,使用远程仓库的 SSH 地址执行 push (推送)命令的时候,就不需要登录了。
7.10.5、再次查看远程库的SSH地址
如上图所示,在 SSH 中已经没有了警告弹窗,表明已配置好了 SSH key 。
7.10.6、删除本地的GitHub登录凭据
如上图所示,删除了 GitHub 账号的凭据。这样做的原因是,为了证明 SSH 免密登录后已配置成功。
7.10.7、使用SSH地址拉取远程库
如上图所示,此时刘备的本地库与远程库不一致,远程库的更新还没有同步到本地库。
如上图所示,第一次使用 SSH 地址,会有提示信息,输入“yes”回车即可。
如上图所示,成功使用 SSH 地址(免密登录)拉取远程库的更新到本地库。
7.10.8、使用SSH地址向远程库推送更新
如上图所示,先在本地库更新内容。
如上图所示,成功使用 SSH 地址(免密登录)向远程库推送了本地库的更新。
如上图所示,远程库确实有了本地库的更新。
7、Git之Github操作的更多相关文章
- Git TortoiseGit github 操作
由于公司采用了分布式架构,选择的是gitlab git 来管理代码等工作,鉴于github和gitlab的相似性,网上查看好多都是用git的命令上传,或者是一部分,为此,借鉴多方网络,并进行实际操作, ...
- Git和Github操作
个人笔记和总结.如有错误欢迎指出https://github.com/zhaozehua0312/leran-gitAndgithub 内容已发布github上
- 使用git和github管理自己的项目---基础操作学习[转]
原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...
- Git和Github的介绍、简单操作、冲突(上)
目的: 1.git与github简介 2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe 5.Git常用命令 5.1Git命令使用场景 5. ...
- Git版本控制 Git、github,gitlab相关操作
目录 关于版本控制 版本管理工具 集中式管理 分布式管理 git版本管理 git介绍 软件安装 Git工作状态 原理流程步骤 git基本操作 对文件进行修改 分支 共享仓库 创建共享仓库: 共享仓库上 ...
- git命令行操作
从本地上传代码到仓库(假设已经建好仓库): 1.初始化: git init 2.将所有文件加入缓存区: git add * 3.提交当前工作空间的修改内容: git commit -m 'commit ...
- 简单使用Git和Github来管理自己的代码和读书笔记
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
- git for windows 的默认工作路径(HOME)的设置以及Git与GitHub之间的SSH加密协议
1.安装及配置默认路径 Windows中从GitHub上面:https://git-for-windows.github.io/ 下载安装好git后(双击,改一下需要的安装路径,一路确定就好了),安装 ...
- git与github安装、配置、pull、push
操作系统是Ubuntu 16.04 LTS 64bit 1 安装git (1)安装 sudo apt-get install git-core (2)一些全局变量的初始化 在本地建立一个文件夹,然后做 ...
- 转:sublime上使用git连接github
"工欲善其事,必先利其器." 这是古人的教诲,也是一个高效率的工程师需要遵循的法则之一.从大学开始写Java使用了JBuilder,Eclipse,后来写PHP用了Zend,写Ja ...
随机推荐
- 调试YOLOv3/YOLOv5过程中遇到的问题汇总
今日立冬 yolov1 yolo1论文 https://www.bilibili.com/video/BV15w411Z7LG yolo2论文 https://www.bilibili.com/vid ...
- idea 使用 mvn clean package 报错 Could not create local repository at
使用 mac 版本的 idea 打包使用打包命令 mvn clean package 总是报错: [ERROR] Could not create local repository at /Repos ...
- kettle从入门到精通 第二十二课 kettle carte web服务中文乱码
在windows 上面 carte服务的canvas画布展示的中文正常,但是在linux上面中文展示乱码,如下所示: 原因:linux 机器缺少字体所致. kettle源码中使用字体: 解决方法: 安 ...
- C# .NET 生成国密私钥公钥对
使用的工具类: using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.GM; using Org.BouncyCastle.Asn1.X9; ...
- java把时间戳转换成时间_(转)java时间与时间戳互转
java中时间精确到毫秒级,所以需求时间需要 除以1000 //将时间转换为时间戳 public static String dateToStamp(String s) throws Exceptio ...
- 使用Wesky.Net.OpenTools包来快速实现嵌套型结构体数据转换功能
今天遇到有人提到结构体和byte数组互转的问题,我就顺便拿来水一篇.这是一个冷门的问题,估计使用的人不多.既然有需求,应该就有使用场景,那就顺便整一波. 为了达到效果,结构体.复杂结构体嵌套等都能实现 ...
- 增补博客 第六篇 python 电子算盘
珠算测试器 题目描述]设计一个珠算测试器,要求能够完成珠算加减法的测试.具体的要求功能如下:(1)用户启动测试,输入用户名后系统随机生成特定数目的加减法测试题:(2) 要求测试使用表盘式或数字时秒表进 ...
- Oracle 数据库 命令行安装
Oracle 数据库 命令行安装 1. 准备工作 关闭 防火墙,关闭 SElinux 2. 安装相关依赖包 yum -y install binutils compat-libcap1 compat- ...
- 大模型重塑软件开发,华为云AI原生应用架构设计与实践分享
在ArchSummit全球架构师峰会2024上,华为云aPaaS平台首席架构师马会彬受邀出席,和技术爱好者分享AI原生应用引擎的架构与实践. AI大模型与AI重塑软件的大趋势下,软件会发生哪些本质的变 ...
- 实验2.ARP实验
# 实验2.ARP实验 本实验用于验证arp以及arp表,arp缓存的使用,测试ping包时arp表的更新机制. 实验组 PC1 10.68.57.10 255.255.255.0 00-00-00- ...