Git
的一大特点就是,能为不同系统下的开发者提供了一个协作开发的平台。而团队如果要基于Git
进行协同开发,就必须依赖远程版本库。远程版本库允许,我们将本地版本库保存在远端服务器,而且,不同的开发者也是基于远程版本库进行协同开发。因此,远程版本库的各种操作,在Git
的使用中至关重要。
一、clone远程版本库
任务描述
当你刚进入到一个开发团队中,你要做的第一件事情,可能就是获取一份项目的源代码。如果你的团队使用
Git
,进行版本控制和代码管理的话,你的leader
很可能会给你一个类似于https://sample.git
的地址。不要惊慌,这很可能就是你们项目的远程版本库地址,通过它你就可以获取到完整的源代码库。本关任务:
clone
指定的远程版本库到本地。相关知识
克隆操作
克隆,顾名思义,就是要获取远程版本库的完整拷贝。通过克隆操作,你可以将整个远程版本库的各种细节复制到本地,并且会建立起本地版本库和远程版本库的对应关系。
克隆操作需要用到的命令是
git clone
,它的具体用法如下所示:
bashgit clone https://sample.git
通过这样的操作,就能将远程版本库复制到本地了,而且会默认克隆到
sample
文件夹下(对应于远程版本库地址中指定的sample
)。同时,你也可以根据需要,指定克隆到其他目录下,其命令格式为:
bashgit clone xxx.git "指定目录"
这样就能将代码都复制到指定目录下。
Git服务器
在团队开发中,我们必须选用一台主机做为
Git
服务器来存放远程版本库。这样团队中的每个开发者,就可以基于一个共同的远程版本库进行开发。目前提供代码托管(即可以将远程版本库存放于其上的)的平台有Github
、码云等,同时我们也可以搭建一台私有的运行Git
的服务器,来做为远程Git
服务器。Github
等平台的使用,及本地Git
服务器的搭建,会在后续的实训中具体介绍。本地Git
服务器,可以配置不同的连接方式,如shell
、git
或bash
。为了给挑战者提供一个便利的实训环境,我们为每个人配置了一台本地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
,其命令格式为:
bashgit remote add "远程仓库名" "远程仓库地址"
使用示例如下:
bashgit remote add origin https://sample.git
这样就将
https://sample.git
添加为远程仓库,并将其命名为origin
。 ###编程要求 本关的编程任务是,补全右侧代码片段中Begin
至End
中间的脚本。通过执行你所编写的脚本,来完成为本地仓库添加远程仓库的任务。远程仓库的地址为/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
,使用方法如下:
bashgit push 远程仓库名 本地分支名 远程分支名
具体的使用方法如下:
bashgit push origin master master
这样就将本地分支的内容,推送到远程仓库
origin
的master
分支了。git push
的另外一种用法如下:
bashgit push -u 远程仓库名 本地分支名 远程分支名
-u
参数的作用是,建立起本地master
分支和远程master
分支之间的对应关系,下一次如果再推送master
分支,就可以忽略远程分支名了,如下所示:编程要求
本关的编程任务是,补全右侧代码片段中
Begin
至End
中间的脚本。通过执行你所编写的脚本,完成将本地内容推送到远程仓库的操作。具体要求如下:
- 创建本地仓库
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
命令,其命令格式为:
bashgit pull 远程主机名 远程分支名 本地分支名
其使用示例如下
bash#将远程仓库origin的master分支的内容拉取到本地master分支 git pull origin master:master
但是,在使用过程中,也可能会出现一种情况:远程分支和本地分支对同一内容做了修改,这就会导致将远程分支的修改,合并到本地分支的时候发生冲突。这个时候,可以选择解决冲突,然后合并(解决冲突会在后续的实训中介绍)。也可以选择直接强制拉取,使用远程分支的修改,覆盖本地分支的修改。强制拉取需要用到
-f
参数,语法格式如下:
bashgit pull 远程主机名 远程分支名 本地分支名 -f
具体的使用示例如下:
bash#将远程仓库origin的master分支的内容拉取到本地master分支 git pull origin master:master -f
编程要求
本关的编程任务是,补全右侧代码片段中
Begin
至End
中间的脚本。通过执行你所编写的脚本,来完成拉取远程分支内容到本地的任务。具体要求如下:
- 创建本地仓库
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 **********#