2.2:项目代码 Clone 与 Push
假设yqc用户是一名开发,目前要为test-software下的test-app1编写代码。
其使用的客户端PC地址为node111(192.168.1.111)。
2.2.1:Clone 项目
2.2.1.1:Clone with HTTP
2.2.1.1.1:复制项目的 HTTP 克隆链接
使用yqc用户登录gitlab,进入test-software/test-app1项目页面,复制HTTP克隆连接。
2.2.1.1.2:客户端 git clone
在客户端主机上执行克隆命令:
单独创建一个工作目录,用于代码克隆和上传。
root@node111:~# mkdir /workspace
root@node111:~# cd /workspace/
root@node111:/workspace# git clone http://192.168.1.121/test-software/test-app1.git
Cloning into 'test-app1'...
Username for 'http://192.168.1.121': yqc
Password for 'http://yqc@192.168.1.121':
warning: You appear to have cloned an empty repository.
因为是个空白项目,所以会有提示:You appear to have cloned an empty repository.
2.2.1.2:Clone with SSH
SSH 克隆需要事先将客户端的公钥添加到Gitlab。这样,克隆私有和内部项目、上传代码时就不需要输入用户名和密码了。
2.2.1.2.1:客户端创建 SSH 密钥对
生成ssh密钥对:
root@node111:~# ssh-keygen
选项保持默认即可,生成的密钥对存放在当前用户家目录的.ssh/
目录中:
其中,
id_rsa为私钥,保存在本机,用于验证公钥;
id_rsa.pub为公钥,传送给对端,在加密通信时提供,以此验证身份。
root@node111:~# ll /root/.ssh
total 16
drwx------ 2 root root 4096 Apr 23 14:09 ./
drwx------ 11 root root 4096 Apr 23 14:09 ../
-rw------- 1 root root 1679 Apr 23 14:09 id_rsa
-rw-r--r-- 1 root root 402 Apr 23 14:09 id_rsa.pub
2.2.1.2.2:为 Gitlab 用户添加 SSH Key
这里添加的是客户端的公钥。
root@node111:~# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDASlumUB3sH81YLr+ZpN4SPU/1Q6Y522WZ4UaZX8p7pJbWXpmM3soUW6+0CF3w/EYQumjbWbnkYLVBXgoHGLohGgT+mc13dRc2jI7OGIxym2HdY/RzDefa7IdWZxFmy8B6+kw3VoiOGMb8GS3yC6KiKFwwCZCh5EBg7x4+6NRkyMsWaj1VZqFQpUDU8QUtRW4oAMmitIAC/k2xxBrW9pSomfqy5gi6m1hEk6VrDp2NnuyTpeTwBKShPV79tcZ+ciJztdSXUPpJLohjQB4DojNeaUw5DQZfOwedJ/7z9YxolkPD8M0RNqXV0xucyCDLANeChv+v0YZtukE/WMATpBG3 root@node111.yqc.com
使用yqc用户登录Gitlab,进入用户设置:
点击SSH Keys,添加公钥。
2.2.1.2.3:复制项目的 SSH 克隆链接
2.2.1.2.4:客户端 git clone
首次使用密钥克隆,需要输入yes确认,之后就不用了。
root@node111:/opt# git clone git@192.168.1.121:test-software/test-app1.git
Cloning into 'test-app1'...
The authenticity of host '192.168.1.121 (192.168.1.121)' can't be established.
ECDSA key fingerprint is SHA256:7axVWAVMgqQAAr3voX79pFVkb0zNywL1j+eKpbtJVac.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.121' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.
2.2.2:Push 项目
对项目代码进行编辑并上传至Gitlab的步骤为:
编辑代码 --> git add 加入暂存区 --> git commit 提交到本地代码仓库 --> git push 提交到 Gitlab 仓库。
整个过程涉及了这样几个区域:
-
工作区:Clone下来的代码存放目录(或者是开发者编写代码所在的目录),通常是以Project名称命名的目录。
-
暂存区:对修改后的代码进行暂时存储的地方,使用
git add
命令将修改后的代码从工作区转移到暂存区。 -
本地仓库:本地的代码仓库,同样具有版本控制功能,使用
git commit
将暂存区的代码提交到本地仓库。
可以理解为针对开发个人的git仓库。Gitlab相当于是一个分布式的版本控制系统,在客户端本地同样具有版本控制功能,用户在没有网络的情况下,可以先将代码提交到本地,在有网络时再将本地提交的代码同步上传至Gitlab服务端。
-
远程仓库:Gitlab服务端的代码仓库。
可以理解为针对多个开发的git仓库,实现多个开发协作。
2.2.2.1:修改项目代码
这里只为项目编辑一个index页面,来进行演示。
进入项目工作目录,编辑一个页面文件并保存:
使用 v1 标识版本。
root@node111:~# cd /workspace/test-app1/
root@node111:/workspace/test-app1# vim index.html
<h1> testapp-1 page v1 </h1>
2.2.2.2:git add 将代码放入暂存区
将当前目录中的代码文件放入暂存区:
root@node111:/workspace/test-app1# git add .
2.2.2.3:git commit 将代码提交到本地仓库
提交时,需要使用-m
指定提交信息,即对本次提交的版本说明。
root@node111:/workspace/test-app1# git commit -m "v1"
[master (root-commit) e6531ba] v1
1 file changed, 1 insertion(+)
create mode 100644 index.html
2.2.2.4:git push 将代码上传至 Gitlab 服务端
输入yqc用户及密码,将代码上传至 Gitlab 的对应项目中。
默认提交到的是master分支。
root@node111:/workspace/test-app1# git push
Username for 'http://192.168.1.121': yqc
Password for 'http://yqc@192.168.1.121':
Counting objects: 3, done.
Writing objects: 100% (3/3), 233 bytes | 233.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.1.121/test-software/test-app1.git
* [new branch] master -> master