版本控制系统概述 git

Git基本概述

Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

Git安装配置

  1. #安装Git
  2. yum install -y git
  3. #配置用户信息,用户名称和电子邮件地址,每次 Git提交时都会引用这两条信息,说明是谁提交了更新;
  4. git config --global user.name "onelpc"
  5. git config --global user.email "614257760@qq.com"
  6. git config --global color.ui true #配置颜色,非必须
  7. #会生成一个配置文件
  8. [root@gitlab ~]# cat ~/.gitconfig
  9. [user]
  10. name = onelpc
  11. email = 614257760@qq.com
  12. [color]
  13. ui = true

Git基本命令

  1. add #添加文件内容至索引
  2. bisect #通过二分查找定位引入 bug 的变更
  3. branch #列出、创建或删除分支
  4. checkout #检出一个分支或路径到工作区
  5. clone #克隆一个版本库到一个新目录
  6. commit #记录变更到版本库
  7. diff #显示提交之间、提交和工作区之间等的差异
  8. fetch #从另外一个版本库下载对象和引用
  9. grep #输出和模式匹配的行
  10. init #创建一个空的 Git 版本库或重新初始化一个已存在的版本库
  11. log #显示提交日志
  12. merge #合并两个或更多开发历史
  13. mv #移动或重命名一个文件、目录或符号链接
  14. pull #获取并合并另外的版本库或一个本地分支
  15. push #更新远程引用和相关的对象
  16. rebase #本地提交转移至更新后的上游分支中
  17. reset #重置当前HEAD到指定状态
  18. rm #从工作区和索引中删除文件
  19. show #显示各种类型的对象
  20. status #显示工作区状态
  21. tag #创建、列出、删除或校验一个GPG签名的 tag 对象

Git基本操作

创建git本地仓库

  1. #创建本地工作目录
  2. mkdir /demo
  3. cd /demo/
  4. #初始化为git工作目录
  5. git init

提交数据

  1. #提交文件到缓存区,
  2. git add file1
  3. git add . //点(.)代表当前目录下所有文件
  4. #提交文件到本地仓库
  5. git commit -m "添加file1"
  6. #当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改(-a参数不会造成新文件被提交,只能修改)
  7. git commit -a -m "修改了xxx等x个文件"

移动数据

  1. git mv file1 file4 #修改文件名称
  2. git commit -m 'change file name' #提交

对比数据

  1. #本地文件与缓冲区文件对比
  2. git diff file1
  3. #缓冲区文件与仓库文件对比
  4. git diff --cached file1

撤销修改的文件

  1. #提交到缓冲的区文件撤回
  2. git reset HEAD filename
  3. #未add到缓冲区的文件撤回
  4. git checkout filename

查看版本与回退

  1. #查看现在版本
  2. git log --oneline
  3. git reset --hard 942bdf3
  4. #查看所有历史版本
  5. git reflog --oneline
  6. git reset --hard 942bdf3

Git分支管理

  1. #增加一个新分支
  2. git branch dev01
  3. #切换分支
  4. git checkout dev01
  5. #查看当前分支情况/所在分支(*代表当前所在)
  6. git branch
  7. #切回主分支
  8. git checkout master
  9. #在主分支合并dev01分支
  10. git merge dev01 -m '注释'
  11. #删除dev01分支
  12. git branch -d dev01

Git标签管理

  1. #给当前版本打标签
  2. git tag v1.2
  3. #删除标签
  4. git tag -d v1.2
  5. #给任意版本打标签
  6. git tag -a v1.0 -m '优化了1111 修复bug' a119962
  7. #查看代码标签信息,(-n,显示tag信息)
  8. git tag -n

Git远程仓库

将远程仓库与本地仓库关联

gitee创建一个仓库

生成公钥文件

  1. [root@gitlab ~/demo]# ssh-keygen
  2. [root@gitlab ~/demo]# cat /root/.ssh/id_rsa.pub
  3. >>将公钥内容复制

将公钥添加到gitee

按照提示操作

提交一个文件至远程仓库

  1. 工作区: touch file5
  2. 暂存区: git add .
  3. 本地仓库: git commit -m "new file file5"
  4. 远程仓库: git push origin master

Gitlab仓库

Gitlab介绍

gitlab是一个开源仓库,社区版ce,企业版ee.(基于git基础上开发)

gitlab 部署

  1. #下载gitlab
  2. [root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
  3. #安装gitlab 依赖
  4. [root@gitlab ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
  5. #安装gitlab
  6. [root@gitlab ~]# yum localinstall -y gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
  7. #配置gitlab
  8. 1.备份gitlab配置文件
  9. [root@gitlab ~]# cp -v /etc/gitlab/{gitlab.rb,gitlab.rb_bak}
  10. [root@gitlab ~]# vim /etc/gitlab/gitlab.rb
  11. 2.修改gitlab访问的url
  12. external_url 'http://gitlab.oldxu.com'
  13. 3.关闭一些没有用程序
  14. prometheus['enable'] = false
  15. prometheus_monitoring['enable'] = false
  16. 4.配置邮箱
  17. gitlab_rails['gitlab_email_enabled'] = true
  18. gitlab_rails['gitlab_email_from'] = "614257760@qq.com" # 发件邮箱
  19. gitlab_rails['gitlab_email_display_name'] = 'OneLpc' # 发件人显示名称
  20. gitlab_rails['smtp_enable'] = true
  21. gitlab_rails['smtp_address'] = "smtp.qq.com"
  22. gitlab_rails['smtp_port'] = 465
  23. gitlab_rails['smtp_user_name'] = "614257760@qq.com" #发件人邮箱账户
  24. gitlab_rails['smtp_password'] = "qweasdzxc" #发件人邮箱客户端授权码
  25. gitlab_rails['smtp_domain'] = "qq.com"
  26. gitlab_rails['smtp_authentication'] = "login"
  27. gitlab_rails['smtp_enable_starttls_auto'] = true
  28. gitlab_rails['smtp_tls'] = true
  29. #初始化gitlab
  30. [root@gitlab ~]# gitlab-ctl reconfigure
  31. #启动 gitlab
  32. [root@gitlab ~]# gitlab-ctl start
  33. 浏览器访问,设置密码

Gitlab汉化

汉化包下载地址:https://gitlab.com/xhang/gitlab

  1. #停止gitlab
  2. [root@gitlab ~]# gitlab-ctl stop
  3. #备份原文件
  4. [root@gitlab ~]# \cp -rp /opt/gitlab/embedded/service/gitlab-rails{,.bak_$(date +%F)}
  5. #替换语言包
  6. [root@gitlab ~]# tar xf gitlab-12-0-stable-zh.tar.gz
  7. [root@gitlab ~]# \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
  8. #重新加载gitlab
  9. [root@gitlab ~]# gitlab-ctl reconfigure
  10. #启动gitlab
  11. [root@gitlab ~]# gitlab-ctl start
  12. #访问gitlab网站设置语句
  13. 选择右上角--->setttings---》Preferences -->Language

Gitlab备份

  1. #手动备份
  2. [root@gitlab-ce ~]# gitlab-rake gitlab:backup:create
  3. >>默认的备份目录:`/var/opt/gitlab/backups`目录下tar的压缩包
  4. #修改gitlab备份目录
  5. [root@gitlab-ce ~]# vim /etc/gitlab/gitlab.rb
  6. ...
  7. gitlab_rails['backup_path'] = "/data/gitlab/backups" #控制备份后的产物放在哪里
  8. gitlab_rails['backup_keep_time'] = 604800 #保留多久的数据
  9. ...
  10. [root@gitlab-ce ~]# gitlab-ctl reconfigure

Gitlab 数据恢复

  1. # 停止相关数据连接服务
  2. [root@gitlab-ce ~]# gitlab-ctl stop unicorn
  3. [root@gitlab-ce ~]# gitlab-ctl stop sidekiq
  4. # 从1576659867_2019_12_18_12.3.5编号备份中恢复
  5. [root@gitlab-ce ~]# gitlab-rake gitlab:backup:restore BACKUP=1576659867_2019_12_18_12.3.5
  6. # 启动Gitlab
  7. [root@gitlab-ce ~]# gitlab-ctl start

Gitlab迁移

迁移如同备份与恢复的步骤一样, 只需要将老服务器备份文件拷贝到新服务器上

需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同.

Gitlab升级

关闭 gitlab 服务

  1. [root@gitlab-ce ~]# gitlab-ctl stop unicorn
  2. [root@gitlab-ce ~]# gitlab-ctl stop sidekiq
  3. [root@gitlab-ce ~]# gitlab-ctl stop nginx

备份gitlab 数据

  1. [root@gitlab-ce ~]# gitlab-rake gitlab:backup:create

安装新版本的rpm包

  1. //直接安装
  2. [root@gitlab-ce ~]# yum install gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
  3. //报错.
  4. Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'
  5. //解决方法:
  6. [root@gitlab-ce ~]# chmod 2770 /var/opt/gitlab/git-data/repositories

启动gitlab

  1. [root@gitlab-ce ~]# gitlab-ctl reconfigure
  2. [root@gitlab-ce ~]# gitlab-ctl restart
  3. [root@gitlab-ce ~]# head -1 /opt/gitlab/version-manifest.txt
  4. gitlab-ce 12.3.0

Gitlab更改默认Nginx

CI持续集成 -- git 与 gitlab的更多相关文章

  1. Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!

    导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...

  2. [原创]CI持续集成系统环境---部署Gitlab环境完整记录

    Gitlab是一个代码托管平台,在实际工作中,对代码管理十分有用. 废话不多说,下面是对我自己搭建的Gitlab环境做一记录: (1)安装 ------------------------------ ...

  3. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  4. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

  5. Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务

    Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...

  6. 【补充】Gitlab 部署 CI 持续集成

    上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...

  7. GitLab CI持续集成配置方案

    目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...

  8. Gitlab CI 持续集成的完整实践

    Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...

  9. 物联网架构成长之路(47)-利用GitLab实现CI持续集成

    0.前言 前段时间,考虑到要练习部署一套CI/CD的系统.一开始考虑到Jenkins,随着这两天的了解,发现最新版的GitLab已经提供有CI/CD集成了.所以本次博客,干脆一步到位,直接用GitLa ...

随机推荐

  1. 【Python爬虫案例学习】Python爬取淘宝店铺和评论

    安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动sel ...

  2. SAS学习笔记1

    数据采样 简单随机抽样,从sashelp数据集中air数据文件中选取30个数 数据探索 数字特征的探索:均值.频数.最大值.最小值.众数.中位数.方差.标准差 数字分布的探索:是否服从正态分布 连续型 ...

  3. 2019 苏宁控股java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.苏宁等公司offer,岗位是Java后端开发,因为发展原因最终选择去了苏宁,入职一年时间了,也成为了面试官,之 ...

  4. 已知IP地址算子网掩码

    子网掩码计算方法有两种: 方法一:利用子网数来计算: 1.首先,将子网数目从十进制数转化为二进制数: 2.接着,统计得到的二进制数的位数,设为N: 3.最后,先求出此IP地址对应的地址类别的子网掩码. ...

  5. 继续了解Java的纤程库 – Quasar

    前一篇文章Java中的纤程库 – Quasar中我做了简单的介绍,现在进一步介绍这个纤程库. Quasar还没有得到广泛的应用,搜寻整个github也就pinterest/quasar-thrift这 ...

  6. 【BBED】bbed常用命令

    [BBED]bbed常用命令         一.1  相关知识点扫盲 BBED(Oracle Block Browerand EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是O ...

  7. C# DataTable 和List之间相互转换的方法(转载)

    来源:https://www.cnblogs.com/shiyh/p/7478241.html 一.List<T>/IEnumerable转换到DataTable/DataView 方法一 ...

  8. vsftp网络服务

    1. vsftp概述 FTP是File Transfer Protocol(文本传输协议)的简称,用于Internet上的文件的双向传输.使用FTP传输时,具有一定程度的危险性,因为数据在因特网上面是 ...

  9. mysql where 1

    where后跟各种查询条件,当条件为真时即可查询出记录.在这里where 1,1为真,也就是where后的条件为真,查询表中所有内容. SELECT * FROM `sdb_pam_members` ...

  10. CVE-2019-0193:Apache Solr 远程命令执行漏洞复现

    0x00 漏洞背景 2019年8月1日,Apache Solr官方发布了CVE-2019-0193漏洞预警,漏洞危害评级为严重 0x01 影响范围 Apache Solr < 8.2.0 0x0 ...