7、Git之Github操作

7.1、注册Github账号

7.1.1、访问官网

Github 官网:https://github.com/

image

先访问GitHub的官网首页,点击 sign in (登录),跳转到登录页。

7.1.2、进入登录页

image

因为目前还没有GitHub的账号,所以先注册一个账号。

7.1.3、填写注册信息

image

输入邮箱、密码和用户名。

image

同意接收相关邮件。

7.1.4、注册验证

image

image

image

image

输入发送到注册邮箱中的验证码。

7.1.5、登录个人主页

image

注册成功后,会自动跳转到个人主页。

7.1.6、演示账号

账号 姓名 邮箱
lb-liao 刘备 lb_liaojy@163.com
km-liao 孔明 km_liaojy@163.com
zy-liao 周瑜 zy_liaojy@163.com

出于演示效果需要,本文使用了三个 GitHub 账号(见上表)。

7.2、创建远程仓库

image

image

如上图所示,即将创建一个名为 kfhs 的远程仓库;因为在 lb-liaojy 账号的名下还没有这个名字的仓库,所以可以使用仓库名。

此外,还设置了该仓库的分类为 public (GitHub的默认分类),表示是公共仓库,读权限是完全放开的;与之相反的是私有仓库 private 。

image

如上图所示,设置完仓库名称和类型后,即可点击“Create repository”按钮,从而创建一个仓库。

image

如上图所示,就是刚创建仓库成功后,什么项目内容都还没有的样子,但我们可以看到该远程仓库的 HTTPS 链接。

7.3、命令速查表

命令 作用
git remote -v 查看已设置的所有远程地址别名
git remote add 别名 远程地址 为一个远程地址设置别名
git push 别名 分支名 推送本地仓库某分支的内容到远程仓库
git pull 远程库地址(别名) 远程分支名 将远程仓库某分支的更新内容拉取到本地仓库
git clone 远程仓库地址 将远程仓库克隆到本地

7.4、远程仓库的别名

7.4.1、创建一个本地库

image

注意:本地仓库名称和远程仓库名称,最好是相同的。

7.4.2、查看远程仓库的别名列表

image

如上图所示,别名列表为空,表示目前还没为任何远程仓库设置别名。

git remote -v

7.4.3、设置远程仓库的别名

image

如上图所示,为远程仓库地址 https://github.com/lb-liaojy/kfhs.git 设置了一个别名 kfhs

git remote add 别名 远程地址

注意:远程仓库地址的别名,最好和远程仓库名称相同。

7.4.4、确认刚设置的远程仓库别名

image

如上图所示,一个别名会对应远程仓库地址的两种类型,分别用于拉取(fetch)和推送(push)。

注意:每个本地仓库都有自己的远程仓库别名列表,相互独立,互不影响。

7.5、推送本地库到远程库

7.5.1、在本地库新增内容

image

image

如上图所示,在本地库新增了一个 plan.txt 文件,其内容为“匡扶汉室”。

7.5.2、查看凭据管理器

image

image

如上图所示,目前还没有 GitHub 账号的相关凭据。

7.5.3、推送本地库的master分支到远程库

image

如上图所示,往远程仓库推送内容,需要登录具备相应权限的 GitHub 账号。

因为已在浏览器中登录了 GitHub 账号,所以可以直接点击“Sign in with your browser”按钮,跳转到浏览器页面进行授权。

image

如上图所示,点击“Authorize git-ecosystem”按钮,即可将浏览器中的 GitHub 账号登录状态,同步到 Windows 系统中。

image

如上图所示,已成功推送本地库的master分支到远程库。

7.5.4、确认凭据管理器

image

如上图所示,Windows系统已记录了 GitHub 的登录凭据,这样以后就不需要再次授权,可以直接往远程仓库推送内容。

7.5.5、查看远程库

image

如上图所示,本地库master分支的内容,已成功推送到远程库。

7.6、拉取远程库到本地库

7.6.1、在线直接修改远程库的内容

image

如上图所示,点击需要修改的文件。

image

如上图所示,打开需要修改的文件后,点击编辑。

image

如上图所示,修改完文件内容后,点击提交按钮。

image

如上图所示,在提交弹窗中,填写提交描述后,点击提交按钮。

image

如上图所示,已成功在线直接修改远程库的内容。此时,远程库和本地库的内容已不一致,因此本地库需要从远程库中,拉取更新的内容。

7.6.2、将远程库的更新内容拉取到本地库

image

如上图所示,已成功将远程仓库master分支的更新内容拉取到本地仓库。

git pull 远程库地址(别名) 远程分支名

7.6.3、查看拉取的更新内容

image

如上图所示,本地库的内容,与远程库的内容,已经同步了。

注意:pull(拉取)命令,会自动将远程分支的更新内容,提交到本地库;因此本地库不用再执行 git add 和 git commit 命令。

7.7、克隆远程库到本地库

7.7.1、删除GitHub账号的凭据

image

image

如上图所示,删除了 GitHub 账号的凭据。这样做的原因是,为了证明克隆远程库到本地库,不需要权限。

7.7.2、复制远程库地址

image

7.7.3、将远程库克隆到本地库

image

如上图所示,已成功将远程库克隆到本地。

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、克隆的三个效果

image

如上图所示,克隆命令实际产生了三个效果:

  • 初始化本地仓库:创建了和远程仓库同名的文件夹,该文件夹中还有用于版本控制的 .git 子文件夹。

  • 拉取内容:本例为 plan.txt 文件。

  • 创建别名:自动为远程仓库地址创建了别名 origin 。

7.8、团队内协作

7.8.1、修改本地库文件

image

如上图所示,孔明克隆了刘备的远程库后,在本地库对文件内容做了修改。

7.8.2、推送本地库的更新到远程库(非团队成员)

image

如上图所示,往远程仓库推送内容,需要登录具备相应权限的 GitHub 账号。

因为已在浏览器中登录了 GitHub 账号,所以可以直接点击“Sign in with your browser”按钮,跳转到浏览器页面进行授权。

注意:出于演示需要,浏览器现在登录的是孔明的账号。

image

image

如上图所示,点击“Authorize git-ecosystem”按钮,即可将浏览器中的 GitHub 账号登录状态,同步到 Windows 系统中。

注意:出于演示需要,浏览器现在登录的是孔明的账号。

image

如上图所示,孔明往(刘备的)远程库推送本地库的更新失败,因为此时孔明还没有往(刘备的)远程库的推送权限。

7.8.3、邀请合作者加入团队

image

如上图所示,在该远程库的 Settings 的 Collaborations 中,点击“add people”按钮,即可查找想要邀请的合作者。

image

image

如上图所示,通过搜索孔明的 GitHub 账号名称,即可向其发送合作邀请。

image

如上图所示,向孔明发送邀请后,还需等待其同意邀请。

7.8.4、同意加入团队的邀请

image

如上图所示,在孔明的 GitHub 信箱中,能看到刘备发来的邀请。

image

如上图所示,孔明点击“Accept invitation”按钮,即可加入刘备的团队。

image

如上图所示,加入刘备的团队后,孔明便有了往刘备的远程库(kfhs)执行 push (推送)命令的权限。

注意:刘备可以有多个远程库,各个远程库可以有不同的团队成员。

7.8.5、推送本地库的更新到远程库(是团队成员)

image

如上图所示,当孔明成功刘备远程库的团队成员后,便可成功推送本地库的更新到这个远程库。

7.8.6、查看远程库

image

image

如上图所示,孔明的本地库更新,已成功推送到刘备的远程库。

注意:此时,刘备本地库和远程库的内容已不一致,因此刘备本地库需要从远程库中,拉取更新的内容。(具体操作见7.6节)

7.9、跨团队协作

7.9.1、查找远程库

image

如上图所示,通过GitHub顶部的搜索框输入关键词,即可查找相关项目。(能精准匹配的关键词格式:GitHub账号名称/远程库名称)

注意:为演示需要,此时登录的GitHub账号是周瑜的。

7.9.2、复制远程库

image

如上图所示,在刘备的远程库中,点击“fork”按钮,即可将该远程库复制一份到自己的 GitHub 账号名下。

image

如上图所示,还可以编辑复制到自己名下的远程库名。

注意:从已自动勾选的可选框可知,默认只复制主分支(master)。

image

如上图所示,复制来的远程库,会显示复制的源头。

7.9.3、对复制来的远程库进行修改

image

image

如上图所示,周瑜成功对复制来的远程库内容做了修改更新;因为该远程库是自己名下的,所以不需要加入刘备的团队,就能拥有写权限。

当然,这样的修改,不会影响到刘备的远程库。

注意:在线直接修改远程库的详细操作过程,可以参考 7.6.1 节。

7.9.4、周瑜发送拉取请求(pr)

image

image

如上图所示,创建拉取请求(pull request)时,可以对比两个远程库分支的差异。

image

如上图所示,发送拉取请求时,会附带拉取请求的标题(默认是提交信息),还可以补充描述。

image

如上图所示,发送拉取请求成功。

7.9.5、刘备查看拉取请求

image

如上图所示,刘备看到了周瑜发送的拉取请求。

image

如上图所示,点击拉取请求的标题,查看周瑜修改的内容。

image

如上图所示,能看到这个拉取请求中,两个远程库分支的差异对比。

7.9.6、在拉取请求中沟通

image

如上图所示,刘备能在这个拉取请求中,向周瑜发送消息。

image

image

如上图所示,周瑜看到刘备在这个拉取请求中的消息后,也可以回消息。

7.9.7、刘备合并拉取请求

image

如上图所示,刘备审核过周瑜的拉取请求后,觉得相关修改是有价值的,可以合并到自己的远程库中。

image

如上图所示,合并拉取请求时,会有确认合并的提示。

image

如上图所示,已成功合并。

image

如上图所示,刘备的远程库中,有周瑜的提交信息。

7.10、SSH免密登录

7.10.1、查看远程库的SSH地址

image

如上图所示,远程库地址除了HTTPS类型的之外,还有SSH类型。

如果使用HTTPS类型的就很简单,基本不需要配置就可以使用,但是每次推送时,都需要用已登录GitHub账号的浏览器授权(或输入用户名和密码)。

SSH类型相比HTTPS类型的一个重要的优点是,只需要配置一次,就不用每次推送时,都重复需要用已登录GitHub账号的浏览器授权(或输入用户名和密码)。当然,前提是必须是该远程库的拥有者或合作者,且配置好了 SSH key (上图显示目前还没配置好 SSH key )。

7.10.2、本地生成SSH密钥

image

如上图所示,先用 Git Bash 进入本地电脑的当前用户的家目录。

cd

image

如上图所示,输入生成密钥的命令后,连续按回车即可。

ssh-keygen -t rsa -C GitHub账号邮箱
  • ssh-keygen:生成SSH密钥的命令。

  • -t:指定生成SSH密钥的加密算法,rsa 是著名的非对称加密算法。

  • -C(注意 C 是大写的):用来指定标识邮箱。

注意:如果之前已经生成过SSH密钥,可以执行以下命令删除旧的
removed directory '.ssh'

7.10.3、查看生成的SSH密钥

image

如上图所示,执行生成密钥的命令后,会有一个“.ssh”的目录,该目录中有私钥文件“id_rsa”和公钥文件“id_rsa.pub”。

cd .ssh/
ll

image

如上图所示,使用 cat 命令查看公钥文件“id_rsa.pub”中的内容。

cat id_rsa.pub

7.10.4、在GitHub中添加公钥

image

如上图所示,点击 GitHub 账号用户头像,在侧弹窗中点击进入“Settings”。

image

如上图所示,在“Settings”中,点击“SSH and GPG keys”,就可以看到“New SSH key”按钮。

image

如上图所示,将在本地生成的 SSH 公钥复制到 GitHub ,并为其自定义一个标识名称。

image

如上图所示,已成功在 GitHub 中添加了一个本地电脑生成的公钥。

这样一来,以后在本地电脑,使用远程仓库的 SSH 地址执行 push (推送)命令的时候,就不需要登录了。

7.10.5、再次查看远程库的SSH地址

image

如上图所示,在 SSH 中已经没有了警告弹窗,表明已配置好了 SSH key 。

7.10.6、删除本地的GitHub登录凭据

image

如上图所示,删除了 GitHub 账号的凭据。这样做的原因是,为了证明 SSH 免密登录后已配置成功。

7.10.7、使用SSH地址拉取远程库

image

如上图所示,此时刘备的本地库与远程库不一致,远程库的更新还没有同步到本地库。

image

如上图所示,第一次使用 SSH 地址,会有提示信息,输入“yes”回车即可。

image

如上图所示,成功使用 SSH 地址(免密登录)拉取远程库的更新到本地库。

7.10.8、使用SSH地址向远程库推送更新

image

如上图所示,先在本地库更新内容。

image

如上图所示,成功使用 SSH 地址(免密登录)向远程库推送了本地库的更新。

image

如上图所示,远程库确实有了本地库的更新。

posted @ 2024-06-28 20:24  Javaer1995  阅读(19)  评论(0编辑  收藏  举报