> 文章列表 > 【】git基础

【】git基础

【】git基础

目录

一、目标

二、Git基本操作

2.1 Git简介

2.1.1 git简介

2.1.2 git与SVN对比

2.1.3 名词解释

2.2 Git工作流程

2.2.1 git相关核心命令

2.3 Git环境搭建

2.3.1 git环境组成部分 -- 远程仓库和本机Git操作环境

2.3.2 常用的Git代码托管服务 -- 远程仓库

2.3.3 本机Git操作环境 - git下载与安装

2.4 Git常用命令

一、目标

1、搭建gitLab环境

2、Pycharm结合gitLab使用

3、gitLab+jenkins实现持续集成自动化测试,发送定制化邮件与报告

4、扩展技能

二、Git基本操作

2.1 Git简介

2.1.1 git简介

Git是一个版本控制系统,版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。

以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:v1、v1.1、v2等,通过这种方式记录不同版本的修改。

有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改、删除等操作。这样的操作是很繁杂的,文件容易丢失。

(版本控制 的 作用(分类有git,SVN等) -- 简单理解:

1、一份代码要经过很多人的手改动,每个人也会不断地改动,

2、为了防止乱套,建立一个仓库把每个版本都留下来,防止找不到以前改过的某个地方)

2.1.2 git与SVN对比

1、SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑。

2、所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

3、集中式版本控制工具缺点:

  • 服务器单点故障

  • 容错性差

4、Git是分布式版本控制系统(Distributed Version Control System,简称DVCS),分为两种类型的仓库:本地仓库和远程仓库。

SVN -- 简单理解:

1、SVN是集中式管理:一人一个电脑,写完放一个大仓库,然后要改的时候从大仓库找最新版本,改完再放回去

2、但是一旦断电,或大仓库挂掉,会出现服务器单点故障,就提交不了了;而且服务器管理起来也很麻烦)

2.1.3 名词解释

1、本地仓库:是开发人员自己电脑上的Git仓库(比如大服务器挂了,可以先上传到自己的小仓库,等大服务器好了,再传上去

2、远程仓库:是在远程服务器上的Git仓库

3、Clone克隆,将远程仓库复制到本地(比如一个新人刚到一个项目组的时候,基本是一次性的,后面就不用克隆了)

4、Push推送,将本地仓库代码上传到远程仓库相当于开发改过了代码上传上去,然后共享

5、Pull拉取,从远程仓库获取最新代码到本地仓库,直接合并到本地仓库(相当于开发从服务器下载代码,)**

6、fetch:类似Pull,如果本地已经有了这个代码,pull会直接更新(覆盖旧的),但是fetch不会自动合并merge,需要手动合并,(类似重名了,要保留哪一份)

图1:26:32

2.2 Git工作流程

2.2.1 git相关核心命令

1、克隆clone

2、拉取PULL

3、推送PUSH

4、提交Commit

图2:34:01

2.3 Git环境搭建

2.3.1 git环境组成部分 -- 远程仓库和本机Git操作环境

2.3.2 常用的Git代码托管服务 -- 远程仓库

(git是门技术,实际常用的远程仓库有)

方框里的了解即可

  • GitHub(国外的)GitHub: Let’s build from here · GitHub

  • GitLab (有安装包,可以装在阿里云啥的)>6G 进程多耗内存Gitee - 企业级 DevOps 研发效能平台

  • 码云Gitee(国内的)Gitee - 企业级 DevOps 研发效能平台

GitHub和GitLab都是基于web的Git仓库,使用起来两者差不多,他们都提供了分享开源项目的平台;
​
为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所;
​
GitHub作为开源代码库,拥有超过900万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub同时提供公共仓库和私有仓库,但如果使用私有仓库,需要付费。
GitLab解决了这个问题,你可以在上面创建私人的免费仓库。
​
GitLab让开发团队对他们的代码仓库拥有更多的控制,相比较GitHub,它有不少特色:
​
- • 允许免费设置仓库权限
​
- • 允许用户选择分享一个project的部分代码
​
- • 允许用户设置project的获取权限,进一步提升安全性
​
- • 可以设置获取到团队整体的改进进度
​
- • 通过innersourcing 让不在权限范围内的人访问不到该资源
Github和码云基于Git,所以两者的操作方法基本一致,只需要学习其中一种即可
GitHub与码云均提供免费的代码仓库
GitHub免费版只能创建公开的项目,私有项目需要付费,码云免费版支持5人以下的组织,可以创建私有项目
​
- gitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub
- 码云是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
- Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
从代码的私有性上来看,GitLab是一个更好的选择
对于开源项目而言,GitHub依然是代码托管的首选

2 GitLab - 容器化技术搭建

  • 1、在/srv目录下新建gitlab文件夹,gitlab文件夹下创建config,logs,data文件夹(/srv目录是挂载用的,用别的也可以,记得把下面的命令改掉,三个文件夹分别是配置,logs,数据)

  • 2、启动docker安装搭建gitlab

    # 由于是docker镜像运行,所以我们需要把gitlab的配置,数据,日志存到容器外面,即将其挂载到宿主机,先准备三个目录:
    cd /srv # 切到srv目录
    mkdir gitlab    # 创建gitlab文件夹
    cd gitlab 
    mkdir config logs data
    ​
    docker run -di -p 443:443 -p 9000:80 -p 8022:22 -- hostname 虚拟机的ip --name mygitlab --restart always -v /srv/local/gitlab/config:/etc/gitlab/ -v /srv/local/gitlab/logs:/var/log/gitlab/ -v /srv/local/gitlab/data:/var/opt/gitlab/ -v /etc/localtime:/etc/localtime:ro --privileged=true gitlab/gitlab-ce:13.9.2-ce.0
    # 443 https协议访问,80是http访问,22端口,主机IP写上去,mygitlab容器name,restart开机自启,后面三个挂载,etc/localtime时间同步,privilege权限
    ​
    # 9000被用的情况,docker ps -a 查看已经占用的端口,docker rm  删掉容器。。
    # 把上述命令的9000改成9001
    docker ps |grep git
    # 然后用浏览器打开192.168.32.129:9001,就能打开了
    docker logs -f 893618173f5c#893618173f5c是前面输入docker ps |grep git出现的状态码??
    ​
    ​
    docker stats# 查看性能 mygitlab查看cpu和MEM USAGE(内存)占用很大
    ​

    然后登录账号密码

    new project - create blank project - 填写project name - 点击create project

2.3.3 本机Git操作环境 - git下载与安装

下载地址 :Git - Downloads

下载完成后可以得到如下安装文件:Git-2.28.0-64-bit.exe

装好后运行:

桌面右键,Git GUI Here(界面化),Git Bash Here(命令行),TortoiseGit(第三方工具)

clone:找一个盘 - 右键- Git Bash Here

输入前两个命令:配置用户名dabaicong、邮箱

在远程仓点击clone,出现clone with SSH 和clone with HTTP,复制HTTP的url

输入命令3,如出现Windows安全中心,输入账号root,密码为刚才设置的密码,可能出现warning为空仓库,忽略,在本地文件夹可以看到对应仓库dabaicong

在命令行继续输入:cd dabaicong,建立文件touch a.txt, 输入命令4,出现如下结果:此时文件图标为?,还没有到暂存区

•   On branch master
​
•               No commits yet
​
•               Untracked files:
​
•                   (use "git add <file>..."to include in what will be committed)
​
•                           a.txt
​
•               nothing added to commit but untracked files present (use "git add" to track)

输入命令5,出现如下结果,此时文件图标为+

•   On branch master
​
•               No commits yet
​
•               Changes to be committed:
​
•                   (use "git rm --cached <file>..."to unstage)
​
•                           new file: a.txt
​

输入命令6,出现如下结果,文件图标变成了√

•   On branch master
​
•Your branch is based on 'origin/master',but the upstream is gone,
​
•       (use "git branch --unset-upstream"to fixup)
​
nothing to commit,working tree clean

输入命令7,出现以下结果

Enumerating objects:3, done
Counting objects:100%(3/3),done
Writing objects:100%(3/3),203 bytes | 203.00 KiB/s,done,
Total 3(delta 0),reused 0(delta 0),pack-reused 0
To http://192.168.32.129:9001/root/dabaicong.git
* [new branch]  master -> master

2.4 Git常用命令

git config --global user -name "Administrator" # 配置用户名,Administrator处填写用户名

git config --global user.email "admin@example.com" # 配置邮箱

git clone http://192.168.32.129:9001/root/dabaicong.git # 把远程仓克隆到本地(url为远程仓点击clone时,clone with HTTP下面的url)

git status 查状态

git add a.txt (a.txt为文件名) 进入工作区

git commit -m "init a" 进入暂存区

git commit -m "init a.txt" a.txt 进入本地仓库

git push origin master 上传到远程仓