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 地址(免密登录)向远程库推送了本地库的更新。
如上图所示,远程库确实有了本地库的更新。
本文来自博客园,作者:Javaer1995,转载请注明原文链接:https://www.cnblogs.com/Javaer1995/p/18137314