Python开发入门/搭建本地git/ 远程仓库gitlab

一.本地使用git

Git简介

• Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
• Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
• Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,
不必服务器端软件支持。
推荐:《pro git》https://down.51cto.com/data/273438

Git工作流程

Python开发入门/搭建本地git/ 远程仓库gitlab_第1张图片
1.安装及配置
• Git安装后需配置用户相关信息

[root@node1 ~]# yum -y install git                                                //安装
[root@node1 ~]# git config --global user.name "Mr.LXH"             //设置用户名
[root@node1 ~]# git config --global user.email "[email protected]"    //设置用户email
[root@node1 ~]# git config --global core.editor vim                       //设置默认编辑器为vim

查看配置信息:
Python开发入门/搭建本地git/ 远程仓库gitlab_第2张图片
2.git的应用流程
2.1.创建版本库
• Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init是使用 Git
的第一个命令。

方法一:还没有项目前

[root@node1]# git init myself
初始化空的 Git 版本库于 /root/nsd2019/myself/.git/

[root@node1]# ls -A myself/
.git

方法二:已有项目目录
Python开发入门/搭建本地git/ 远程仓库gitlab_第3张图片
2.2.添加文件到暂存区
工作区、暂存区和版本库 (git重要工作区域)
• 工作区:就是你在电脑里能看到的目录 (编写代码的项目目录)
• 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也
叫作索引(index) (工作区与版本库之间的缓冲地带)
• 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库(在工作区中有一个名为.git的目录,他是保
存文件的目录)
Python开发入门/搭建本地git/ 远程仓库gitlab_第4张图片
Python开发入门/搭建本地git/ 远程仓库gitlab_第5张图片

 [root@node1 self1]# git status                              //查看状态

Python开发入门/搭建本地git/ 远程仓库gitlab_第6张图片

[root@node1 self1]# git status -s
   ?? index.html

]# git add index.html                        //提交到暂存区
]# git status 

Python开发入门/搭建本地git/ 远程仓库gitlab_第7张图片

 ]# git status -s
 A  index.html

2.3提交文件到版本库

[root@node1 self1]# git commit -m "add new file index.html"
]# git status

2.4将文件从暂存区撤出

[root@node1 self1]# cp /etc/hosts .
[root@node1 self1]# git add .
[root@node1 self1]# git status

Python开发入门/搭建本地git/ 远程仓库gitlab_第8张图片

[root@node1 self1]# git reset HEAD hosts
[root@node1 self1]# git status

在这里插入图片描述

2.5删除文件
提交文件

 [root@node1 self1]# git status -s
    ?? hosts
 [root@node1 self1]# git add .                                  //将尚未提交到版本库的文件提交
 [root@node1 self1]# git status -s
    A  hosts
 [root@node1 self1]# git commit -m " add hosts"    //提交

删除hosts文件

[root@node1 self1]# rm -f hosts 
[root@node1 self1]# git status

Python开发入门/搭建本地git/ 远程仓库gitlab_第9张图片

[root@node1 self1]# git rm hosts
rm 'hosts'
[root@node1 self1]# git status

Python开发入门/搭建本地git/ 远程仓库gitlab_第10张图片

[root@node1 self1]# git status -s
D  hosts

[root@node1 self1]# git commit -m "delete hosts"              //彻底删除

在这里插入图片描述
继续删除index.html

 [root@node1 self1]# git rm index.html
 [root@node1 self1]# git status

Python开发入门/搭建本地git/ 远程仓库gitlab_第11张图片

[root@node1 self1]# git reset HEAD index.html
[root@node1 self1]# git status

Python开发入门/搭建本地git/ 远程仓库gitlab_第12张图片

[root@node1 self1]# git checkout  --  index.html
[root@node1 self1]# ls
[root@node1 self1]# git status 

在这里插入图片描述
2.6 移动,复制

[root@node1 self1]# mkdir abc
[root@node1 self1]# cp  /etc/passwd .
[root@node1 self1]# cp /etc/shadow .
shadow   shadow-  shells   

提交文件到版本库

[root@node1 self1]# git add .
[root@node1 self1]# git commit -m "add new files"
[root@node1 self1]# git status

Python开发入门/搭建本地git/ 远程仓库gitlab_第13张图片

[root@node1 self]# git commit -m "mv passwd -> abc/mima"
[root@node1 self]# git status

在这里插入图片描述
将shadow拷贝到abc

[root@node1 self1]# cp shadow abc
[root@node1 self1]# ls
abc  index.html  shadow
[root@node1 self1]# git status
[root@node1 self1]# git add .
[root@node1 self1]# git status
[root@node1 self1]# git commit -m "cp shadow abc/"

2.7 分支管理

  • git默认有一个名为master的分支

  • git默认情况下,名为HEAD的指针指向master返回到之前的某一次commit:

    [root@node1 self1]# git log
    [root@node1 self1]# git status
    [root@node1 self1]# git checkout       5acd40b9bf4506f2f97500d62497e6f67088b35b
    
    [root@node1 self1]# ls
    hosts  index.html
    [root@node1 self1]# git checkout    master 
    [root@node1 self1]# ls
    abc  index.html  shadow
    [root@node1 self1]# git branch b1
     [root@node1 self1]# git branch 
    b1
    * master
    
    [root@node1 self]# ls
    abc  index.html  shadow
    

在b1分支中,新建文件

[root@node1 self]# echo 'hello world' > hello.txt
[root@node1 self]# ls
abc  hello.txt  index.html  shadow
[root@node1  self]# git add .
[root@node1  self]# git commit -m "add hello.txt"

当b1中的代码已经完成了,就可以将分支汇入主干切换到master分支,并汇入

[root@node1 self]# git checkout master
切换到分支 'master'
[root@node1 self]# ls
abc  index.html  redhat-release  shadow
[root@node1 self]# git merge b1
[root@node1 self]# ls
abc  hello.txt  index.html  redhat-release  shadow

删除分支

[root@node1  self]# git branch -d b1
已删除分支 b1(曾为 8853c68)。
[root@node1  slef]# git branch
* master

二.git服务器应用

使用远程服务器
准备一台虚拟机192.168.1.12
内存4G以上
安装docker
把gitlab_zh.tar包拷贝到虚拟机

[root@room9pc01 ~]# scp -r /linux-soft/04/docker/ 192.168.1.12:/root/docker
[root@room9pc01~]# scp /linux-soft/05/gitlab_zh.tar 192.168.1.12:/root/docker
[root@room9pc01 ~]# mkdir /var/ftp/rhelosp
[root@room9pc01 ~]# ls /linux-soft/04/openstack/
]# mount /linux-soft/04/openstack/RHEL7-extras.iso  /var/ftp/rhelosp/
]# vim /etc/fstab 

1.1配置docker
安装

[root@room9pc01 ~]# virsh edit node2                        //修改虚拟机的xml
4488282
4488282

[root@room9pc01 ~]# virsh destroy node2
[root@room9pc01 ~]# virsh start node2                    //重新启动虚拟机
[root@room9pc01 ~]# ssh 192.168.1.12
[root@node2 ~]# free -h                                   //查看内存
[root@node2 ~]# vim /etc/yum.repos.d/local.repo 
[docker]
name=docker
baseurl="ftp://192.168.1.254/rhelosp"
enabled=1
gpgcheck=0
[root@node2 ~]# yum -y install docker                         //安装docker
[root@node2 ~]# systemctl restart docker
[root@node2 ~]# systemctl enable docker
[root@node2 ~]# docker images 
[root@node2 ~]# ls -ll docker/
[root@node2 ~]# for i in docker/*.tar                        //把镜像导入docker容器内
> do
> docker load -i ${i}
> done

导入gitlab镜像

[root@node2 ~]# docker load <  gitlad_zh.tar

修改虚拟机ssh端口为2022,因为22端口需要留给容器用

[root@node2 ~]# vim /etc/ssh/sshd_config 
Port 2022
[root@node2 ~]# systemctl restart sshd

1.2重新使用2022端口远程连接服务器

[root@room9pc01 ~]# ssh -p2022 192.168.1.12

启动容器

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

[root@node2 ~]# docker ps          //当状态中,显示healthy时,容器才能正常使用

[root@node2 ~]# firefox http://192.168.1.12/

1.3初始化gitlab服务器
• 密码需大于8位
• 默认用户名为root
Python开发入门/搭建本地git/ 远程仓库gitlab_第14张图片
Python开发入门/搭建本地git/ 远程仓库gitlab_第15张图片
Python开发入门/搭建本地git/ 远程仓库gitlab_第16张图片
1.4添加gitlab项目

  • 访问http://gitlab服务器
  • 第一次访问需要为root用户设置密码,密码要求8位以上,复杂
  • gitlab中重要的概念
  • 组group:可以为一个团队创建一个组
  • 成员member:创建用户,将用户加入到组中,成为组的成员
  • 项目project:一个团队、一个用户都可以开发软件项目,软件项目不只一个,为每一个开发项目,在gitlab上创建一个project与之对应。

1.4.1
创建名为devops的组,组类型为公开
创建名为pro2的项目,属于devops组,类型为公开
创建用户时,创建用户时,不能为用户指定密码,但是能修改用户资料时,可以设置密码.
授权,授权新建的用户是pro2项目的主程序员

创建群组
Python开发入门/搭建本地git/ 远程仓库gitlab_第17张图片
创建项目
在这里插入图片描述
Python开发入门/搭建本地git/ 远程仓库gitlab_第18张图片
Python开发入门/搭建本地git/ 远程仓库gitlab_第19张图片
创建用户
Python开发入门/搭建本地git/ 远程仓库gitlab_第20张图片
• 创建用户后,再次编辑可设置密码
Python开发入门/搭建本地git/ 远程仓库gitlab_第21张图片
Python开发入门/搭建本地git/ 远程仓库gitlab_第22张图片
• root用户将新用户加入组中,并设置新用户为“主程序员”
Python开发入门/搭建本地git/ 远程仓库gitlab_第23张图片
• 新用户初次登陆,需设置自己的密码
Python开发入门/搭建本地git/ 远程仓库gitlab_第24张图片
用户管理
新用户不用配置任何选项,已经可以通过http协议进行代码的上传。但是,通过http上传代码,每次执行操作时,都需要填写用户名、密码

1.5配置ssh免密上传代码
• 将本地生成的公钥上传至服务器

  • 生成ssh密钥

    [root@node1 self1]# ssh-keygen -t rsa -C "[email protected]" -b 4096
    
  • 点击右上角用户“设置”

  • 点击左侧工具栏的“ssh密钥”,将公钥拷贝到“密钥”文本框中

    [root@node1 self1]# cat ~/.ssh/id_rsa.pub
    

Python开发入门/搭建本地git/ 远程仓库gitlab_第25张图片
1.6 上传代码到gitlad服务器

[root@room9pc01 nsd2019]# ssh 192.168.1.11
t@node1 self1]# cd ~/self1/
[root@node1 self1]# git remote rename origin old-origin
[root@node1 self1]# git remote add origin [email protected]:root/pro2.git
[root@node1 self1]# git push -u origin --all

1.7后续上传代码的过程

[root@node1 self1]# cp /etc/bashrc .
[root@node1 self1]# git status
[root@node1 self1]# git add .
[root@node1 self1]# git status
[root@node1 self1]# git commit -m "add bashrc"         //提交代码
[root@node1 self1]# git push                                       //上传代码

1.8其他用户下载代码:

  • 协议应该使用http

  • 第一次下载的时候,用git clone

  • 后续如果有更新,只要git pull即可

    [root@room9pc01 nsd2019]# ssh 192.168.1.13
    [root@node3 ~]# cd /tmp/
    [root@node3 tmp]# git clone http://192.168.1.12:root/pro2.git
    [root@node3 tmp]# cd pro2/
    [root@node3 pro2]# ls
    abc bashrc hello.txt index.html redhat-release shadow

总结:
使用git时,如果不希望把某些文件,目录保存到到版本库,可以在项目目录下
创建一个名为.gitignore的文件,再把需要忽略的文件写进去。

```shell
[root@node5 pro2]# vim .gitignore
*.doc
*.docx
```

你可能感兴趣的:(Docker,gitlab)