【Git开发教程 四 —— Git远程库交互】

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。


上篇文章重点介绍了分支的操作,包括创建分支、合并分支和冲突的解决。这样,关于本地库的基本操作就讲解完了,本篇文章将对本地库与远程库之间的交互作一个讲解。


创建GitHub账号

对于远程代码托管中心,我们有两个选择:码云和GitHub,这里我以GitHub为例进行讲解。

大家先注册一下GitHub的账号,官网地址:github.com/ 具体注册步骤就不介绍了,非常简单。


如何创建远程库

注册完成后我们登录自己的账号,进入主页: 在这里插入图片描述 这是我的主页,下面介绍如何在GitHub中创建远程库。 在这里插入图片描述 你可以点击左边的绿色按钮新建仓库,也可以先点击右上角的加号,然后点击New Repository新建仓库。

然后跳转到该界面: 在这里插入图片描述 仓库名必须填写,仓库描述可填可不填,这里勾选公共仓库,因为GitHub中的私有仓库是收费的,然后初始化README文件我们也不选,直接点击绿色按钮完成创建。

在这里插入图片描述 这样仓库就建好了,里面没有任何东西。


如何将本地库推送到远程库

创建好远程库后,我们重新创建一个本地库来进行测试(仓库名为TestGitHub): 在这里插入图片描述 本地仓库名不用非得和远程仓库名一致,但为了区分,通常都设置为同一个名字。

这样本地库和远程库都创建好了,接下来如何将本地库推送到远程库呢? 我们需要获取远程库的地址,复制如下内容: 在这里插入图片描述 这就是远程库的地址,通过该地址我们就能够将本地库推送上去。

在TestGitHub文件夹内启动Git终端,先初始化仓库,然后提交一下内容: 在这里插入图片描述 这里有一个地方前面忘了说了,顺便提一提,当工作区的文件特别多的时候,采用git add [文件名]的方式显然太麻烦了,这时候我们可以使用指令git add .来将当前目录下的所有文件添加到暂存区,注意add.之间有一个空格。

提交完成后,我们就能通过远程库地址将本地库推送上去了,执行指令:

git push https://github.com/blizzawang/TestGitHub.git master

push表示推送,push后面跟上远程库的地址,地址后面写上需要推送到的分支,因为是新创建的本地库,只有master分支,为了与本地库对应,在远程库也创建master分支。

执行指令后,会弹出该页面让你输入用户名和密码,正确输入点击Login即可。 在这里插入图片描述 在这里插入图片描述 这样就表示推送成功了,我们回到GitHub页面,刷新一下网址: 在这里插入图片描述 当提交操作特别频繁的时候,经常粘贴远程库地址显然又费力又容易出错,为此,Git提供了一个方式,可以给远程库地址起一个别名。

我们可以先使用该指令查看一下目前是否有设置别名:

git remote -v

发现终端是没有任何反应的,下面执行该指令对远程库地址起一个别名:

git remote add origin https://github.com/blizzawang/TestGitHub.git

add后面跟上别名,一般起的别名即为:origin。

别名后面跟上远程库地址,再次查看是否设置了别名: 在这里插入图片描述 这次就有了,我们可以通过别名来推送本地库了,指令如下:

git push origin master

这里的origin就代表了一长串的远程库地址。


如何将远程库克隆到本地

学会了如何键本地库推送到远程库,我们还需要掌握如何将远程库克隆下来,重新创建一个文件夹,作为另外一个工作区(名字为TestGitHub_2):

此时我们在该文件夹下启动Git终端,然后执行指令:

git clone https://github.com/blizzawang/TestGitHub.git

clone后面跟上需要克隆的远程库地址。

如果不知道远程库地址,可以在这里找到: 在这里插入图片描述 执行结果: 在这里插入图片描述 这样克隆就完成了,我们查看一下TestGitHub_2文件夹: 在这里插入图片描述 整个项目就下来了,同时该项目还携带了.git目录,就无需我们自己去初始化仓库。

克隆项目到本地有三个效果:

  1. 完整地把远程库下载到本地
  2. 创建origin远程库地址别名
  3. 初始化本地库

克隆完成后,我在克隆下来的项目中新建一个test111.txt文件模拟开发过程: 在这里插入图片描述 接下来我们提交一下该操作: 在这里插入图片描述 提交完成后,我们尝试着将该本地库推送到远程库,执行指令:

git push origin master

此时又会弹出登录界面让我们输入用户名和密码,这里我再输入另外一个账户模拟另外一个开发者的身份: 在这里插入图片描述 按照之前的想法,这个开发者还没有加入到项目团队中,是不能直接进行推送的,看执行结果: 在这里插入图片描述


邀请其它开发者加入项目团队

要想让其它开发者能够将本地库推送到远程库,我们得让该开发者进入项目团队,来到GitHub网页: 在这里插入图片描述 点击仓库中的Settings进入设置页面: 在这里插入图片描述 先点击左边的Manage access,然后点击下方的绿色按钮,此时弹出一个搜索框: 在这里插入图片描述 在搜索框内输入另外一个账户的用户名,下面就显示出了该用户,然后点击该用户: 在这里插入图片描述 接着点击加入项目。

还没完,在底下点击如下按钮: 在这里插入图片描述 就复制到了邀请链接,此时把邀请链接发送给你准备邀请的人,让对方访问该链接就可以了,这里我是自己演示,所以我切换成了另一个GitHub账户然后访问该链接: 在这里插入图片描述 点击接受即可。 现在我们以另一个开发者的身份重新推送一下本地库: 在这里插入图片描述 推送成功,刷新GitHub页面: 在这里插入图片描述 新操作也进来了。

会发现,第二次推送的时候系统并没有要求我们去输入用户名和密码,其实是系统自动帮你记录了: 在这里插入图片描述 如果想切换账户,把原来的凭据删除,下次推送就又会让你输入用户名和密码了。


如何拉取远程库

我们暂且将最开始推送远程库的开发人员称为程序员A,另一位开发人员称为程序员B。

那么现在的情况是,程序员B克隆了程序员A的远程库到本地,并在本地进行了修改,然后推送到了远程库。

此时程序员A若想得到程序员B修改的代码,就需要从远程库进行拉取代码。

首先我们需要回到程序员A的工作区,即:TestGitHub文件夹。在该文件夹下启动Git终端,执行指令:

git fetch origin master

执行结果: 在这里插入图片描述 该指令会将指定地址的远程库下载到本地,但是这个时候工作区的文件内容是没有改变的,可以查看工作区: 在这里插入图片描述 它将下载的内容放到了一个名为origin/master的分支上,你可以切换到该分支看看是否和远程库一致,这里我就不演示了。

所以我们还需要一个合并的操作,执行指令:

git merge origin/master

在这里插入图片描述 查看工作区: 在这里插入图片描述 拉取成功。

Git还为此提供了一个更加方便的拉取方式,指令为:

git pull origin master

执行该条指令相当于先执行了fetch,然后执行merge,两者合并为一次操作。


解决合并冲突

在讲解本地库的分支操作时,我们便介绍了该如何去解决合并所产生的冲突,这里的协同开发同样可能会产生一系列的冲突问题,解决方法是类似的。

举个例子,程序A对项目中的test.txt文件进行了修改: 在这里插入图片描述 修改完成后,我们把本次操作提交一下: 在这里插入图片描述 提交完成后,把本地库推送到远程,执行指令:

git push origin master

此时查看远程库: 在这里插入图片描述 推送是成功的。

然后程序员B也对test.txt文件进行了修改: 在这里插入图片描述 同样将操作提交一下: 在这里插入图片描述 我们再让程序员B进行推送:

git push origin master

此时终端就报错了: 在这里插入图片描述 这是因为你所推送的内容和远程库中的内容起了冲突,因为你准备修改的地方已经有内容了,是程序员A修改的,这时候你需要将远程库先拉取下来,执行指令:

git pull origin master

在这里插入图片描述 看到红色框线标注的内容,是不是感觉似曾相识呢?没错,现在我们又处于合并中的状态了,打开程序员B的工作区: 在这里插入图片描述 解决冲突也很简单,把不需要的内容都删除就行了,这里我们就把程序员A和程序员B所做的修改都保留下来: 在这里插入图片描述 接下来的操作就一样了,将文件添加到暂存区:

git add test.txt

然后提交:

git commit -m "解决程序员B因推送产生的冲突"

这里还是注意千万别加文件名。

提交完成后,就可以推送到远程库了:

git push origin master

在这里插入图片描述


跨团队协作开发

刚才介绍了如何进行团队协作开发,当你将某位开发人员邀请到你的项目团队中,该开发人员就可以对远程库进行拉取和推送的操作了。

但是这仅限于团队内部人员,什么意思呢?你的项目肯定是交由公司内部的人或者你信任的人来一起开发。比如你目前正在开发公司项目中的某个模块,途中遇到了一些技术上的问题,你找人帮忙,可他不是你们公司的,你当然不能把他邀请到你的项目团队里了,这就涉及到一个跨团队协作开发的问题,该如何解决呢?

这个在前面也说过了,我记得好像是专栏的第一篇文章, 当时说的是,团队外部人员可以将项目fork到自己的远程库,然后克隆到本地进行开发,完成后通过pull request发起请求,待项目负责人员审核后就可以进行合并了。

下面具体演示一下: 目前程序员A和程序员B在同时开发一个项目,此时程序员B遇到了一些问题需要程序员C帮忙,程序员C就需要去访问项目地址: 在这里插入图片描述 看到项目后,我们点击右上角的Fork,点了之后就会在程序员C的GitHub中复制一份远程库: 在这里插入图片描述 这样程序员C就可以开始正常开发了,新建一个文件夹(名为:TestGitHub_3),然后在该文件夹下启动Git终端,并将远程库克隆下来,执行指令:

git clone https://github.com/IronSpiderMan/TestGitHub.git

注意这里的地址是程序员C的远程库地址。

克隆下来以后,我们在程序员C的工作区创建一个pay.txt文件: 在这里插入图片描述 然后提交该操作: 在这里插入图片描述 提交完成后推送到远程库,执行指令:

git push origin master

此时刷新程序员C的远程库: 在这里插入图片描述 推送就完成了。

接下来程序员C就需要发起一个pull request请求,点击下图中红色框线标注部分: 在这里插入图片描述 你可以点击上面的Pull Requests,也可以点击下面的New pull requets来直接发起请求: 在这里插入图片描述 此时会显示你所做的修改,新添加了一个pay.txt文件,然后点击绿色按钮Create pull request: 在这里插入图片描述 输入一下这次请求的标题和内容,完成后点击右下角的绿色按钮: 在这里插入图片描述 到这里,程序员C的任务就完成了,接下来就要让程序员A去审核程序员C发起的请求: 在这里插入图片描述 可以看到程序员A的远程库中有一个Pull requests,我们点击进入: 在这里插入图片描述 这里就可以看到程序员C发起的请求,点击进去查看: 在这里插入图片描述 可以看到,这里是可以让两个开发者进行对话的,你可以询问他一些代码细节上的问题,对方收到消息后也可以回复你。 点击提交: 在这里插入图片描述 再来到程序员C的GitHub: 在这里插入图片描述 你就收到了程序员A发送来的消息,此时你就可以继续回复他。 在这里插入图片描述 Files changed可以查看程序员C具体改动了哪些文件,都确认无误后,点击下面的绿色按钮开始合并: 在这里插入图片描述 然后输入本次合并的注释信息: 在这里插入图片描述 点击绿色按钮确认合并,合并就完成了。 在这里插入图片描述 此时程序员A的远程库中就有了程序员C的代码,程序员A又可以对远程库进行拉取,本地开发,然后推送等操作。


尾语

✍ 用 Code 谱写世界,让生活更有趣。❤️

✍ 万水千山总是情,点赞再走行不行。❤️

✍ 码字不易,还望各位大侠多多支持。❤️