Git分布式管理-头歌实验远程版本库

Git的一大特点就是,能为不同系统下的开发者提供了一个协作开发的平台。而团队如果要基于Git进行协同开发,就必须依赖远程版本库。远程版本库允许,我们将本地版本库保存在远端服务器,而且,不同的开发者也是基于远程版本库进行协同开发。因此,远程版本库的各种操作,在Git的使用中至关重要。

一、clone远程版本库

任务描述

当你刚进入到一个开发团队中,你要做的第一件事情,可能就是获取一份项目的源代码。如果你的团队使用Git,进行版本控制和代码管理的话,你的leader很可能会给你一个类似于https://sample.git的地址。不要惊慌,这很可能就是你们项目的远程版本库地址,通过它你就可以获取到完整的源代码库。

本关任务:clone指定的远程版本库到本地。

相关知识

克隆操作

克隆,顾名思义,就是要获取远程版本库的完整拷贝。通过克隆操作,你可以将整个远程版本库的各种细节复制到本地,并且会建立起本地版本库和远程版本库的对应关系。

克隆操作需要用到的命令是git clone,它的具体用法如下所示:

bash 复制代码
git clone https://sample.git

通过这样的操作,就能将远程版本库复制到本地了,而且会默认克隆到sample文件夹下(对应于远程版本库地址中指定的sample)。同时,你也可以根据需要,指定克隆到其他目录下,其命令格式为:

bash 复制代码
git clone xxx.git "指定目录"

这样就能将代码都复制到指定目录下。

Git服务器

在团队开发中,我们必须选用一台主机做为Git服务器来存放远程版本库。这样团队中的每个开发者,就可以基于一个共同的远程版本库进行开发。目前提供代码托管(即可以将远程版本库存放于其上的)的平台有Github、码云等,同时我们也可以搭建一台私有的运行Git的服务器,来做为远程Git服务器。Github等平台的使用,及本地Git服务器的搭建,会在后续的实训中具体介绍。本地Git服务器,可以配置不同的连接方式,如shellgitbash。为了给挑战者提供一个便利的实训环境,我们为每个人配置了一台本地Git服务器,并允许以bash方式进行操作,即可以通过类似于/home/sample.git这种形式的地址,做为远程仓库地址进行操作,而不是像https://sample.git这种形式。

编程要求

java 复制代码
#请在下面的Begin/End内填写语句以将远程版本库clone到本地
#********** Begin **********#

git clone /tmp/sample.git

#********** End **********#

二、添加远程版本库-git remote add

任务描述

现在你要自己启动一个项目了,你需要将你的代码保存到远程版本中。那么你要做的第一件事就是,需要为你的本地版本库添加一个远程仓库,然后整个团队才能基于这个远程版本库进行协同开发。 本关任务:创建一个本地版本库,并为其添加远程仓库。

相关知识

添加远程版本库需要用到的命令是git remote add,其命令格式为:

bash 复制代码
git remote add "远程仓库名" "远程仓库地址"

使用示例如下:

bash 复制代码
git remote add origin https://sample.git

这样就将https://sample.git添加为远程仓库,并将其命名为origin。 ###编程要求 本关的编程任务是,补全右侧代码片段中BeginEnd中间的脚本。通过执行你所编写的脚本,来完成为本地仓库添加远程仓库的任务。远程仓库的地址为/tmp/sample.git。具体要求如下:

  • 创建一个本地版本库;
  • 为创建的本地仓库添加远程仓库,且将其命名为git
bash 复制代码
#创建gitTrainging文件夹
mkdir gitTraining

#进入到gitTraining文件夹
cd gitTraining

#将gitTraining初始化为一个本地仓库
git init

#请在下面的Begin/End内填写语句添加符合要求的主机名和远程仓库
#********** Begin **********#

git remote add git /tmp/sample.git

#********** End **********#

三、推送本地内容到远程仓库-git push

任务描述

在团队开发中一个很频繁、很普通的行为,就是将你的修改推送到远程仓库,以便于测试或者和团队中其他人协作。

本关任务:创建本地仓库仓库并添加远程主机,然后创建helloGit.txt文件,并向其中写入"Hello,Git!I am coming",最后将其推送到远程仓库的master分支。

相关知识

推送本地内容时,会将所有未推送至远程仓库的内容,都提到远程仓库。它用到的命令是git push,使用方法如下:

bash 复制代码
git push 远程仓库名 本地分支名 远程分支名

具体的使用方法如下:

bash 复制代码
git push origin master master

这样就将本地分支的内容,推送到远程仓库originmaster分支了。 git push的另外一种用法如下:

bash 复制代码
git push -u 远程仓库名 本地分支名 远程分支名

-u参数的作用是,建立起本地master分支和远程master分支之间的对应关系,下一次如果再推送master分支,就可以忽略远程分支名了,如下所示:

编程要求

本关的编程任务是,补全右侧代码片段中BeginEnd中间的脚本。通过执行你所编写的脚本,完成将本地内容推送到远程仓库的操作。具体要求如下:

  • 创建本地仓库gitTrainging
  • 添加远程仓库/tmp/educoder.git,并将其命名为git
  • 创建helloGit.txt文件,并将其添加到本地仓库;
  • helloGit.txt推送到远程仓库。
bash 复制代码
#创建gitTraining目录
mkdir gitTraining

#进入gitTraining目录
cd gitTraining

#将gitTraining初始化为一个本地仓库
git init

#创建helloGit.txt
touch helloGit.txt

#添加远程仓库
git remote add git /tmp/educoder.git

#将helloGit.txt添加到暂存区
git add helloGit.txt

#将helloGit.txt提交到本地仓库
git commit -m "hello Git!"


#请在下面的Begin/End内填写语句,将本地master分支的修改推送到
#远程仓库的master分支
#********** Begin **********#

git push git master

#********** End **********#

四、拉取远程分支到本地-git pull

任务描述

在前三个关卡,我们已经学习了,如何克隆版本库、添加远程仓库及推送本地内容到远程分支这三种操作。那么在团队协作中,如果别人对项目做了修改,而你需要将这些修改合并到你本地时,该怎么做呢?

本关任务:将远程分支内容拉取到本地。

相关知识

拉取远程仓库的内容到本地,需要使用git pull命令,其命令格式为:

bash 复制代码
git pull 远程主机名 远程分支名 本地分支名

其使用示例如下

bash 复制代码
#将远程仓库origin的master分支的内容拉取到本地master分支
git pull origin master:master

但是,在使用过程中,也可能会出现一种情况:远程分支和本地分支对同一内容做了修改,这就会导致将远程分支的修改,合并到本地分支的时候发生冲突。这个时候,可以选择解决冲突,然后合并(解决冲突会在后续的实训中介绍)。也可以选择直接强制拉取,使用远程分支的修改,覆盖本地分支的修改。强制拉取需要用到-f参数,语法格式如下:

bash 复制代码
git pull 远程主机名 远程分支名 本地分支名 -f

具体的使用示例如下:

bash 复制代码
#将远程仓库origin的master分支的内容拉取到本地master分支
git pull origin master:master -f

编程要求

本关的编程任务是,补全右侧代码片段中BeginEnd中间的脚本。通过执行你所编写的脚本,来完成拉取远程分支内容到本地的任务。具体要求如下:

  • 创建本地仓库gitTraining
  • 添加远程仓库/tmp/educoder.git
  • 拉取远程仓库的master分支到本地。
bash 复制代码
#创建gitTraining目录
mkdir gitTraining

#进入gitTraining目录
cd gitTraining

#将gitTraining初始化为一个本地仓库
git init

#创建helloGit.txt
touch helloGit.txt

#添加远程仓库
git remote add git /tmp/educoder.git

#请在下面的Begin/End内填写语句以拉取远程仓库git的master分支内容到本地
#********** Begin **********#
git pull git master

#********** End **********#
相关推荐
不能再留遗憾了1 小时前
RabbitMQ 高级特性——消息分发
分布式·rabbitmq·ruby
茶馆大橘1 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
研究是为了理解1 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT2 小时前
Git 的基本概念和使用方式
git
材料苦逼不会梦到计算机白富美4 小时前
golang分布式缓存项目 Day 1
分布式·缓存·golang
想进大厂的小王4 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
Java 第一深情4 小时前
高性能分布式缓存Redis-数据管理与性能提升之道
redis·分布式·缓存
Winston Wood5 小时前
一文了解git TAG
git·版本控制
喵喵先森6 小时前
Git 的基本概念和使用方式
git·源代码管理
ZHOU西口6 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac