目录
一、目标
二、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是一个版本控制系统,版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。
以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目:v1、v1.1、v2等,通过这种方式记录不同版本的修改。
有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改、删除等操作。这样的操作是很繁杂的,文件容易丢失。
(版本控制 的 作用(分类有git,SVN等) -- 简单理解:
1、一份代码要经过很多人的手改动,每个人也会不断地改动,
2、为了防止乱套,建立一个仓库把每个版本都留下来,防止找不到以前改过的某个地方)
1、SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑。
2、所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
3、集中式版本控制工具缺点:
服务器单点故障
容错性差
4、Git是分布式版本控制系统(Distributed Version Control System,简称DVCS),分为两种类型的仓库:本地仓库和远程仓库。
(SVN -- 简单理解:
1、SVN是集中式管理:一人一个电脑,写完放一个大仓库,然后要改的时候从大仓库找最新版本,改完再放回去
2、但是一旦断电,或大仓库挂掉,会出现服务器单点故障,就提交不了了;而且服务器管理起来也很麻烦)
1、本地仓库:是开发人员自己电脑上的Git仓库(比如大服务器挂了,可以先上传到自己的小仓库,等大服务器好了,再传上去
2、远程仓库:是在远程服务器上的Git仓库
3、Clone:克隆,将远程仓库复制到本地(比如一个新人刚到一个项目组的时候,基本是一次性的,后面就不用克隆了)
4、Push:推送,将本地仓库代码上传到远程仓库(相当于开发改过了代码上传上去,然后共享)
5、Pull:拉取,从远程仓库获取最新代码到本地仓库,直接合并到本地仓库(相当于开发从服务器下载代码,)**
6、fetch:类似Pull,如果本地已经有了这个代码,pull会直接更新(覆盖旧的),但是fetch不会自动合并merge,需要手动合并,(类似重名了,要保留哪一份)
图1:26:32
1、克隆clone
2、拉取PULL
3、推送PUSH
4、提交Commit
图2:34:01
(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
下载地址 :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..."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..."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
git config --global user -name "Administrator" # 配置用户名,Administrator处填写用户名
git config --global user.email "[email protected]" # 配置邮箱
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 上传到远程仓