Git入门与使用 (三) 使用GitHub进行代码托管的相关操作


一、前言

  在上一篇文章中已经对Git相关命令的介绍与使用进行了讲解,下面正式进入到使用GitHub进行代码托管的相关操作的讲解。



二、使用GitHub进行代码托管的相关操作

1、推送本地仓库内容至远程仓库

1.1、登录GitHub,点击右上角的"+",选择New repository,创建一个新的仓库

1.2、进入到新建仓库页面,填写仓库的相关信息,点击Create repository按钮,创建远程仓库

1.3、创建好远程仓库之后,会进入到GitHub的操作提示页面,同时页面也会给出远程库的地址(有Https和SSH两种类型的地址)

1.4、在我们本地创建一个名为git-test的文件夹,并初始化使其成为Git本地仓库 (注意:本地仓库名称可以与远程仓库名称不一致,这里只是为了好区分,所以才命名一致)

1.5、新建一个data.txt文件,并在文件中添加一些内容,然后提交至本地仓库

1.6、在本地创建远程仓库地址的别名,由于远程仓库的地址太长,写起来太麻烦,所以我们可以为远程仓库地址设置一个别名,之后就可以直接使用别名来替代远程仓库地址

//查看地址映射
git remote -v

//添加地址别名映射
git remote add 别名 远程仓库地址

1.6.1、点击复制按钮,复制远程仓库地址

1.6.2、添加远程仓库地址别名映射

可以看到有两个相同的远程仓库地址别名映射,只是括号后面的内容不一致

  • origin https://github.com/lemon-wubin/git-test.git (fetch):表示用来拉取远程仓库的内容到本地仓库时使用的地址

  • origin https://github.com/lemon-wubin/git-test.git (push):表示用来推送本地仓库内容到远程仓库时使用的地址

1.7、推送本地仓库内容至远程仓库

git push 远程仓库地址别名 本地仓库分支名

1.7.1、执行推送命令后,需要输入GitHub的用户名和密码进行验证,才能推送至远程仓库

1.7.2、推送成功,并查看GitHub远程仓库


在这里插入图片描述

2、克隆远程仓库内容至本地仓库

2.1、在我们本地另外创建一个名为git-clone的文件夹,并进入到git-clone文件夹下

2.2、复制远程仓库地址

2.3、克隆远程仓库内容至本地

git clone 远程仓库地址


可以看到,我们把远程仓库中的内容克隆到了我们本地,同时克隆操作也帮我们初始化了本地仓库添加了远程仓库地址别名映射

3、邀请他人加入项目团队

3.1、我们修改本地git-clone/git-test仓库下的data.txt文件,在data.txt文件中添加一行新的内容,并提交到本地仓库


3.2、我们使用另外一个名为lemon-jackGitHub账号进行远程提交

由于在演示推送本地仓库内容至远程仓库时,我们使用了名为lemon-wubinGitHub账号登录并成功推送至远程仓库,这时Windows10操作系统会自动帮我们记住GitHub的用户名和密码,下次再推送时就会自动登录,而不需要我们再次输入GitHub的用户名和密码,为了演示用另外一个名为lemon-jackGitHub账号进行远程提交操作,我们需要删除Windows10操作系统凭据管理器中的GitHub的账号信息,重新使用其他的GitHub账号来进行登录

3.2.1、鼠标右键此电脑或者我的电脑,选择属性(R)进入到Windows10系统页面,并点击左上角的控制面板主页,进入到控制面板页面

3.2.2、进入到控制面板页面之后,点击右上角的类别选项,将类别切换成小图标

3.2.3、以小图标的方式进行查看之后,找到凭据管理器并点击,进入到凭据管理器页面

3.2.4、选择Windows 凭据,找到GitHub账号信息凭据,并点击删除即可

3.2.5、使用另外一个名为lemon-jackGitHub账号进行远程提交

3.2.6、提示名为lemon-jackGitHub账号,不能访问我们的远程仓库地址

这是因为其他人在未被加入到项目团队之前,是无法推送本地仓库内容至远程仓库,因为远程仓库是仓库拥有者创建的,所以其他人没有相关的权限,但仓库拥有者可以邀请其他人加入到项目团队,这样其他人就拥有了推送操作的权限。接下来我们来操作如何邀请他人加入项目团队。

3.3、在我们的git-test远程仓库页面中,点击Settings选项

3.4、点击Collaborators选项,输入被邀请人的GitHub账号的用户名,最后点击Add collaborator按钮


3.5、点击Copy invite link按钮,复制邀请链接,然后发送给被邀请人 (其实在我们上一步点击Add collaborator按钮时,GitHub会自动把邀请链接已邮箱的形式发送给被邀请人)

3.6、被邀请人登录到自己的GitHub账号后,访问邀请人 (即:远程仓库拥有者) 发送过来的邀请链接,然后点击Accept invitation按钮,接收邀请即可


3.7、我们再次使用名为lemon-jackGitHub账号,进行推送操作,推送成功



4、拉取远程仓库修改的内容

//pull(拉取)操作其实是fetch(抓取)和merge(合并)两个操作的合并,先fetch再merge
git pull 远程仓库地址别名 远程仓库分支名

等价于

git fetch 远程仓库别名 远程仓库分支名
git merge 远程仓库别名/远程仓库分支名 (需要先切换到被合并的分支)

4.1、上一步我们已经把修改的内容推送到了远程仓库,接下来我们来拉取远程仓库修改的内容,此时我们所在位置是git-clone/git-test仓库下,我们先进入到另外一个git-test仓库下


4.2、拉取远程仓库修改的内容


5、解决协同开发时产生的冲突

接下来我们就来模拟在协同开发时,如何解决产生的冲突

5.1、当前我们处于git-test仓库下,我们修改仓库下的data.txt文件,并提交到本地仓库

5.2、使用名为lemon-wubinGitHub账号,进行推送操作 (记得删除凭据管理器中的GitHub的账号信息),推送成功

5.3、此时我们所在位置是git-test仓库下,我们先进入到git-clone/git-test仓库下,修改仓库下的data.txt文件,并提交到本地仓库

5.3、使用名为lemon-jackGitHub账号,进行推送操作 (记得删除凭据管理器中的GitHub的账号信息)

可以看到一条提示信息error: failed to push some refs to 'https://github.com/lemon-wubin/git-test.git',我们推送至远程仓库失败了,这是因为在lemon-jack用户之前,lemon-wubin用户已经把他的修改提交到了远程仓库中,而lemon-jack用户所进行的一系类操作,并不是基于GitHub远程仓库的最新版本所做修改的,所以GitHub禁止我们推送,所以我们需要先拉取远程仓库最新版本的内容到本地,然后再做相应的修改,最后推送至远程仓库。

5.4、拉取远程仓库最新版本的内容到本地

从上图可以看到一条提示信息Automatic merge failed; fix conflicts and then commit the result.,系统告诉我们拉取远程仓库最新版本的内容失败了,原因是lemon-jack用户与lemon-wubin用户对data.txt文件的同一处地方都做了修改,Git拿不定主意。

5.4、手动解决冲突,使用Vim编辑器打开产生冲突的data.txt文件,显示的内容如下所示:
在这里插入图片描述
<<<<<<< HEAD=======之间的内容是我们当前本地仓库的内容,而=======>>>>>>> 60978c99fdfbd50efe0de22f351ea1c01c71c519之间的内容是远程仓库的内容,我们将data.txt文件的内容修改成我们想要的内容,同时删除<<<<<<< HEAD=======>>>>>>> 60978c99fdfbd50efe0de22f351ea1c01c71c519,修改完成之后的内容为:

5.5、重新将data.txt文件提交到暂存区,然后提交到本地仓库中

这样,冲突就被我们给解决了,不过需要注意的是,以往我们在进行提交操作时,都习惯在提交命令后带上文件名,即:git commit -m "提交信息" filename,但是在进行冲突的提交时,是不能够带上文件名的,即:git commit -m "提交信息",不然会提示:fatal:cannot do a partial commit during a merge.的错误信息,这点需要特别注意。

5.5、最后再次使用名为lemon-jackGitHub账号,进行推送操作 (记得删除凭据管理器中的GitHub的账号信息),推送成功



6、跨团队协作开发

在实际的开发项目中,有些项目功能公司团队内部人员无法实现,但是公司外的团队成员能够实现这一功能,这时我们就需要跨团队协作开发,接下来我们就来模拟跨团队协作开发

6.1、复制远程项目地址,发送给公司外名为lemon-john的团队成员


6.2、lemon-john成员登录到GitHub,并访问该远程项目地址,然后点击Fork按钮(是以lemon-john成员的身份点击Fork按钮),拷贝一份到自己的GitHub远程仓库下

6.3、进入到Forking中,可以看到此时的仓库拥有者为lemon-john,同时指出了fork 来源自lemon-wubin/git-test

6.4、复制lemon-john成员fork下来的远程仓库地址

6.5、在本地新建一个git-team的文件夹,并克隆lemon-john成员fork下来的远程仓库内容到git-team文件夹下

6.6、进入到git-team/git-test目录下,修改data.txt文件,并提交到本地仓库

6.7、使用名为lemon-johnGitHub账号,推送到lemon-john用户的GitHub远程仓库中

6.8、点击Pull requests选项,然后再点击New pull request按钮,发起Pull requests请求

6.9、点击Create pull request按钮,同时可以看到红色方框中,文件内容的改动情况

6.10、发起Pull requests请求通知,输入请求通知的标题和正文内容,最后点击Create pull request按钮

6.11、使用名为lemon-wubin的公司团队内部人员登录到GitHub,点击Pull requests选项,查看lemon-john成员发起的Pull requests请求通知

6.12、同时lemon-wubin成员也可以回复lemon-john成员发送过来的Pull requests请求通知消息

6.14、审核lemon-john成员提交和修改的内容

点击Commits选项,查看提交了哪些内容

点击Files changed选项,查看具体修改的内容

6.15、审核通过之后,点击Conversation选项,然后点击Merge pull request按钮,进行合并操作

6.16、添加合并操作日志,点击Confirm merge按钮进行合并

6.17、此时我们所在位置是git-team/git-test仓库下,我们进入到git-test仓库下,拉取远程仓库合并后的最新内容


7、GitHub设置SSH Key,实现SSH免密登录

在使用远程仓库的HTTPS地址进行推送操作时,由于Windows10系统凭据管理器会自动帮我们记录GitHub的账号信息,所以每次在进行远程推送操作时,我们不需要输入GitHub账号的用户名和密码 (首次推送时,我们需要输入GitHub账号的用户名和密码),但是其他系统有可能没有凭据管理器,所以每次我们使用远程仓库的HTTPS地址进行推送操作时,都需要输入GitHub账号的用户名和密码,但是我们可以为远程仓库的SSH地址设置SSH Key,实现免密登录,接下来我们就来为GitHub设置SSH Key,实现SSH免密登录

7.1、什么是密钥

    密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥又分为对称密钥与非对称密钥,对称密钥加密又称私钥加密或会话密钥加密算法,非对称密钥加密系统又称公钥密钥加密。

7.2、设置SSH Key

7.2.1、首先进入到用户的家目录 (即:~) 下,并删除.ssh/目录

7.2.2、使用如下命令生成SSH Key,在生成SSH Key的过程中,需要我们确认相关信息,直接一路按下回车键即可

ssh-keygen -t rsa -C "GitHub邮箱地址"

7.2.3、进入到.ssh/目录下,查看生成的id_rsa.pub文件 (公钥) 和 id_rsa文件 (私钥)

7.2.3、查看生成的id_rsa.pub文件 (公钥)内容,并复制id_rsa.pub文件中的内容,注意:复制id_rsa.pub文件中的内容时,内容开头或者末尾不要包含多余的空格

7.2.4、登录到GitHub上,点击右上角的头像,并点击Settings选项,进入到设置页面

7.2.5、进入到设置页面之后,点击SSH and GPG keys选项,然后点击New SSH key按钮,添加SSH key

7.2.6、填写标题,并把之前复制id_rsa.pub文件中的内容粘贴到Key文本框中,然后点击Add SSH key按钮

7.2.7、输入GitHub账号的密码,并点击Confirm password按钮

7.2.8、添加SSH key成功

7.2.9、测试SSH key是否配置成功,我们在Git终端输入ssh -T [email protected]命令,这时它会问我们是否确定要继续连接吗,这是我们输入yes,表示确定继续连接

当看到有Hi lemon-wubin! You've successfully authenticated, but GitHub does not provide shell access.的提示信息时,则表示GitHub设置SSH Key成功。如果配置失败,请使用ssh -vT [email protected]命令查看具体出错信息,然后排查问题。



Git入门与使用系列文章列表:

Git入门与使用 (一) Git介绍与安装
Git入门与使用 (二) Git相关命令的介绍与使用
Git入门与使用 (三) 使用GitHub进行代码托管的相关操作
Git入门与使用 (四) IDEA集成Git,并通过图形化界面进行Git相关操作
Git入门与使用 (五) GitLab介绍与安装




                   如果有遇到不懂或者有问题时,可以扫描下方二维码,欢迎进群交流与分享,希望能够跟大家交流学习!

发布了76 篇原创文章 · 获赞 253 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/qq_39135287/article/details/103389650