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 刘备 [email protected]
km-liao 孔明 [email protected]
zy-liao 周瑜 [email protected]

出于演示效果需要,本文使用了三个 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 地址(免密登录)向远程库推送了本地库的更新。

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

热门相关:腹黑老公溺宠:老婆不准躲   邪王独爱:娘子不准逃跑   大首长,小媳妇   官仙   重生八零俏佳妻