git服务器搭建

P1 kube-node2服务器

互联网已经存在的大型git服务器【版本控制服务器】

https://github.com【国外网站,速度慢】

https://about. gitlub.com/【国外网站,速度慢】

https://gitee.com【国内阿里的git网站,可以注册使用】

环境准备,使用之前的kube-node2主机建本地 kube-node2 服务器:导入中文版 kube-node2 镜像

上传gitlab_zh.tar镜像文件到root家目录下

[root@kube-node2 ~]# docker load -i gitlab_zh.tar #向docker中,导入镜像gitlab_zh.tar

[root@kube-node2 ~]# docker images

要想以ssh的方式访问kube-node2,会和物理机的22端口冲突,修改主机ssh的端口为2022

[root@kube-node2 ~]# vim /etc/ssh/sshd_config

 17 Port 2022

[root@kube-node2 ~]# systemctl restart sshd

[c:\~]$ ssh [email protected] 2022 #Ctrl + D退出xshell远程连接,重新连接加上端口2022

启动gitlab容器

##【docker run】 根据镜像启动一个容器;【-d】 指定从后台运行容器;

##【-h】 设置容器主机名;--name 给容器命名,容器命名必须是唯一的;

##【-p】端口映射,宿主机端口:容器端口;【-v】 持久卷映射,真实目录:容器内目录

[root@kube-node2 ~]# docker run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlib/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh:latest

#查看容器的状态信息,状态必须是:... (healthy),包含starting 代表正在启动中

#docker rm -i 【ID号】 强制删除容器

[root@kube-node2 ~]# docker ps

CONTAINER ID    IMAGE    COMMAND    CREATED   STATUS   PORTS   NAMES

c0acff2ba797       kube-node2_zh:latest    "/assets/wrapper"   3 minutes ago       Up 3 minutes (healthy)   0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   kube-node2

初始化 gitlab 服务器:密码需大于8位

- [x] 浏览器访问 192.168.1.22 即可,输入新密码 1234.com【任意定义】

git服务器搭建_第1张图片

输入默认用户名: root,密码:1234.com

git服务器搭建_第2张图片

添加 gitlab项目

- 创建群组 group:使用群组管理项目和人员是非常好的方式

- 创建项目 project:存储代码地方,里面包含问题列表、维基文档及其他一些 gitlab 功能

- 创建成员 member:添加你的团队成员或其他人员到 gitlab

创建群组

选择【管理区域】

选择【New group】

git服务器搭建_第3张图片

设置群组路径 devops,群组名称devops,描述devops,可见等级为公开

git服务器搭建_第4张图片

创建项目

选择【管理区域】

选择【New project】

git服务器搭建_第5张图片

设置项目属于的组devops,项目名称myweb,项目描述myweb,可见等级公开

git服务器搭建_第6张图片使用gitlib

P1 用户管理

创建用户

选择【管理区域】

选择【New user】

git服务器搭建_第7张图片

设置【姓名zhangzhigang】,【用户名zzg】和【电子邮箱z[email protected]

[姓名]     #类似昵称;

[用户名]   #此为普通用户的登录账号名;

git服务器搭建_第8张图片

选择【编辑】

git服务器搭建_第9张图片

为用户设置密码:1234.com

git服务器搭建_第10张图片

将用户添加到组:oot 用户将新用户加入组中,并设置新用户为“主程序员”

选择【管理区域】,点击【Groups: 】

git服务器搭建_第11张图片

点击组【devops】

git服务器搭建_第12张图片

选择用户,为用户设置类别,点击【增加用户到群组】

git服务器搭建_第13张图片

为项目添加新的管理用户

选择【管理区域】,点击【Projects: 】,点击【devops/myweb】,点击名称【myweb】,选择【设置】,选择【成员】

选择【要邀请的成员】,选择【角色权限】,点击【添加到项目即可】

#因为用户zzg已经在组devops中了,所以用户zzg默认就属于项目,不需要重复添加;

#其他单个用户可以安装此步骤进行添加;

使用普通用户登录:用户在第一次登录时需要修改密码,退出当前管理员账号

输入用户名 zzg 和密码 1234.com, 选择【登录】

修改密码,这里和原密码相同【1234.com】

git服务器搭建_第14张图片

使用普通账号zzg,密码1234.com,重新登录

代码管理:查看项目详细信息【可以看到对应的git使用命令】

通过 http 协议上传代码:将本地仓库推送至服务器,在pycharm主机操作

[root@kube-node1 ~]# cd git_lesson/myweb/ #进入到本地myweb的git仓库下

[root@kube-node1 myweb]# git remote add origin http://192.168.1.22/devops/myweb.git

[root@kube-node1 myweb]# git push -u origin --all #将本地git仓库下的所有分支,推送到远程服务器的origin仓库中

Username for 'http://192.168.1.22': zzg   #输入项目管理用户:zzg

Password for 'http://[email protected]':  #输入项目管理用户的密码:1234.com

#将本地git仓库下的所有标签,也推送到远程服务器的origin仓库中

[root@kube-node1 myweb]# git push -u origin --tags

Username for 'http://192.168.1.22': zzg   #输入项目管理用户:zzg

Password for 'http://[email protected]':  #输入项目管理用户的密码:1234.com

在 gitlib 服务器上查看推送结果,推送成功,可以查看【提交】【分支】和【标签】*

[root@kube-node1 myweb]# vim README.md

#git test

this is a test

```python

print('Hello World!')

```

[root@kube-node1 myweb]# git add .

[root@kube-node1 myweb]# git commit -m 'add lines to README.md'

[root@kube-node1 myweb]# git push #重复再次推送代码时,使用git push即可

Username for 'http://192.168.1.22': zzg     #输入项目管理用户:zzg

Password for 'http://[email protected]':     #输入项目管理密码:1234.com

通过 ssh 上传代码:将本地仓库推送至服务器,配置SSH免密登陆

[root@kube-node1 myweb]# ssh-keygen

[root@kube-node1 myweb]# cat /root/.ssh/id_rsa.pub   #查看公钥,复制公钥

在kube-node2服务器上配置SSH免密

git服务器搭建_第15张图片

[root@kube-node1 myweb]# > /root/.ssh/known_hosts

[root@kube-node1 myweb]# git remote #查看kube-node2远程服务器仓库在本地的映射

[root@kube-node1 myweb]# git remote remove origin

[root@kube-node1 myweb]# git remote add origin [email protected]:devops/myweb.git #使用SSH协议添加origin默认仓库

[root@kube-node1 myweb]# git push #推送版本库【.git】中数据,不用输入用户名和密码

[root@kube-node1 myweb]# vim README.md

#git test

this is a test

​```python

print('Hello World!')

print('Hello World!')

​```

[root@kube-node1 myweb]# git add .

[root@kube-node1 myweb]# git commit -m 'modify README.md'

[root@kube-node1 myweb]# git push #不需要输入密码,推送成功

远程分支管理

P1 远程仓库

远程仓库基础

- 远程仓库是指托管在因特网或其他网络中的你的项目的版本库

- 可以有多个远程仓库,通常有些仓库对你只读,有些则可读写

- 与他人协作涉及管理远程仓库,以及根据需要推送或拉取数据

- 管理远程仓库包括添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等

查看远程仓库:如果你已经克隆了仓库,那么至少应该能看到 origin,这是Git 给你克隆的仓库服务器的默认名字

查看远程仓库

[root@kube-node1 ~]# cd /root/git_lesson/grit/

[root@kube-node1 grit]# git remote #查看kube-node2远程服务器仓库在本地的映射

[root@kube-node1 grit]# git remote -v #查看仓库的使用详情【fetch 拉取数据】,【push 推送数据】

添加远程仓库:运行 git  remove  add  < shortname >< url > 添加一个新的远程 Git 仓库

[root@kube-node1 grit]# git remote add pb https://github.com/paulboone/ticgit #将远程的github服务器上的仓库,添加到本地

[root@kube-node1 grit]# git remote -v #查看使用详情【fetch 拉取数据】,【push 推送数据】

本地已经有了远程服务器的仓库pb, 使用fetch拉取远程仓库中的数据到本地仓库

[root@kube-node1 grit]# git fetch pb #拉取的仓库有两个分支

[root@kube-node1 grit]# git remote show origin #查看远程仓库origin更多的信息

[root@kube-node1 grit]# git remote rename pb paul #将在本地映射的远程仓库的名称修改为paul

[root@kube-node1 grit]# git remote -v #查看在本地映射的远程仓库,改名成功

[root@kube-node1 grit]# git remote rm paul #移除远程仓库在本地的映射paul

使用远程分支

- 远程引用是对远程仓库的引用(指针),包括分支、标签等等

- 以通过 git   ls-remote  < remote > 获得远程引用的完整列表

- 远程跟踪分支是远程分支状态的引用。它们是无法移动的本地引用

- 一旦进入了网络通信,Git 就会为你移动它们以精确反映远程仓库的状态

远程分支命名

#远程指针【origin/master】和本地指针【master】同时指向同一次提交

#1》在本地不能直接移动远程分支的指针,是通过fetch拉取时移动的;

#2》本地的分支可以通过不断的提交进行移动;

#3》远程分支和本地分支不会自动合并,需要我们自己通过merge进行分支合并;

推送分支

##向远程服务器的仓库origin推送分支serverfix【这里不需要实际操作】

##如果远程服务器有分支serverfix,则会更新分支中的代码

##如果远程服务器中没有分支serverfix,则会创建该分支

[root@kube-node1 ~]# cd /root/git_lesson/myweb/ #向远程服务器推送分支

[root@kube-node1 myweb]# git branch #查看分支

[root@kube-node1 myweb]# git branch b1 #创建分支b1

[root@kube-node1 myweb]# git checkout b1 #切换到分支b1下

[root@kube-node1 myweb]# cp /etc/issue . #拷贝issue文件到当前目录下

[root@kube-node1 myweb]# git add . #将此次修改添加到暂存区中

[root@kube-node1 myweb]# git commit -m 'add issue' #提交

将本地仓库master分支,推送到远程的git服务器上,因为修改的是分支b1,master分支没有做任何操作,推送失败

[root@kube-node1 myweb]# git push origin master

Everything up-to-date

将分支b1,推送到远程版本库下,分支b1存在则会自动合并数据;分支b1不存在,会自动创建分支b1

[root@kube-node1 myweb]# git push origin b1

在kube-node2服务器上查看分支更新

git pull【跟踪分支】    #拉取远程服务器数据时,会自动合并远程分支和本地分支;

git fetch【拉取分支】    #下载远程服务器分支到本地,但不会自动合并远程分支和本地分支,需要自己合并;

【git pull】和【git  fetch】的演示

[root@kube-node1 myweb]# cd /root/git_lesson/

[root@kube-node1 git_lesson]# git clone http://192.168.1.22/devops/myweb.git  newweb

在myweb仓库的b1分支下修改数据,提交到本地仓库

[root@kube-node1 git_lesson]# cd /root/git_lesson/myweb/

[root@kube-node1 myweb]# git branch #查看当前所处的分支,b1分支

[root@kube-node1 myweb]# vim issue #修改issue文件

\S

Kernel \r on an \m

Kernel \r on an \m

Kernel \r on an \m

[root@kube-node1 myweb]# git add .

[root@kube-node1 myweb]# git commit -m "modified issue"

在myweb仓库的master分支下修改数据,提交到本地仓库

[root@kube-node1 myweb]# git checkout master

[root@kube-node1 myweb]# cp /etc/motd .

[root@kube-node1 myweb]# git add .

[root@kube-node1 myweb]# git commit -m "add motd"

推送本地仓库中的数据到远程kube-node2服务器上

[root@kube-node1 myweb]# git push #成功

在newweb仓库下,验证push和fetch的区别

[root@kube-node1 myweb]# cd /root/git_lesson/newweb/

[root@kube-node1 newweb]# git pull #将远程git服务器上的数据下载下来,并且分支会自动合并

[root@kube-node1 newweb]# git fetch origin b1 #【fetch】 只会从origin仓库中下载分支b1

##【pull】 会将分支b1从origin仓库中下载下来,并且会和本地的b1分支进行合并

##会打开一个合并分支的对话框

##合并提示信息:Merge branch 'b1' of http://192.168.1.118/devops/myweb

[root@kube-node1 newweb]# git pull origin b1

[root@kube-node1 newweb]# git push origin --delete b1 #删除远程服务器,origin仓库中b1分支

你可能感兴趣的:(git,gitee)