git与gitlab

目录

gitlab

下载与安装

重置管理员密码

邮箱配置

gitlab命令

git远程gitlab相关命令

gitlab的使用

设置中文

修改默认分支

创建群组并授权

新建项目/新建库

设置当前用户的sshkey

Deploy Keys

计划管理

权限管理

gitlab的备份与恢复

git

git 分布式版本控制

安装

git的四个区域与文件的四个状态

使用git

常用命令

分支管理   

补充



        git 分布式管理系统
        gitlab  企业私有库
        github  公网共享库,全球最大的代码托管网站、开源网站、交流网站

gitlab

下载与安装

地址:    
    官网 https://about.gitlab.com/downlads
    清华镜像  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

安装
    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
    yum -y install gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

修改配置文件(ruby语言编写):
  vim /etc/gitlab/gitlab.rb
    external_url 'URL'
  gitlab-ctl reconfigure  配置生效并启动
  gitlab-ctl show-config 验证配置
  gitlab-ctl status  查看
  可以直接访问URL登录界面

重置管理员密码

gitlab-rails console #进入gitlab控制台

user = User.find_by(username: 'root') # 切换为root用户

user.password='Picc@2222222' #设置密码

user.save! #保存

邮箱配置

        邮箱键值修改调通后,相关操作会通过邮箱通知到你

gitlab命令


gitlab-ctl
    status
    start
    stop
    restart
    tail nginx  查看日志

git远程gitlab相关命令

git

    remote 
            -v 显示远程仓库
            -add  REPONAME URL #添加一个远程库

            -remove REPONAME  #删除一个远程仓库

            show  REPONAME  #显示指定库的详细信息

            rename OLD NEW #变更远程地址的名字        


    clong  从远程主机克隆一个版本库

    fetch  远程主机的版本库有了更新,fetch命令可以将这些更新取回本地,并且对你本地的开发代码没有影响。可以用git merge origin/master或git rebase origin/master把远程仓库master分支代码与本地当前分支合并

    pull  <远程主机名> <远程分支名>:<本地分支名> 相当于git fetch + git merge 作用是取回远程主机某个分支的更新,再与本地的指定分支合并

        -p 加上参数 -p 就会在本地删除远程已经删除的分支。

    push  <远程主机名> <本地分支名>:<远程分支名>

    参考文档:https://www.yiibai.com/git/git_push.html?_t=t
          REPONAME
                  BRANCHNAME:BRANCHNAME #推送分支到远程仓库

                          --tags #推送分支时一并把tag推送到远程仓库
                  TAGNAME:推送tag到远程仓库
                   --delete BRANCHNAME  删除远程仓库分支

        示例:

#添加远程仓库
$ git remote add  origin git@192.168.0.13:java/test.git 
#删除远程仓库
$ git remote  remove origin 
#查看远程仓库分支 
$ git branch  -r  
#取回origin主机的next分支,与本地的master分支合并。
$ git pull origin next:master
#取回origin主机的next分支,与当前分支合并
$ git pull origin next
#省略远程分支表示将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。
#在本地删除远程已经删除的分支。
$ git pull -p
$ git push origin master
#如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
$ git push origin :master
# 以上命令等同于以下命令
$ git push origin --delete master
#将当前分支推送到origin主机的对应分支。
$ git push origin
#如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push
#如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push
$ git push -u origin master
#不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机
$ git push --all origin
#用本地分支lbranch-3覆盖远程分支rbranch-1:
$ git push -f origin lbranch-2:refs/rbranch-1
#如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项,但是结果导致在远程主机产生一个”非直进式”的合并(non-fast-forward merge)。除非你很确定要这样做,否则应该尽量避免使用–-force选项。
$ git push --force origin
#git push不会推送标签(tag),除非使用–tags选项。
$ git push origin --tags
#推送tag
$ git push origin tag_name
#删除远程标签
$ git push origin :tag_name

gitlab的使用

设置中文

修改默认分支

        默认为main,一般修改为master

创建群组并授权

        创建群组,群组一般根据开发团队来分配群组

        需先进入群组中授权,可以根据需要授权给某人或其他组并设置他们的角色

新建项目/新建库

        补充:授权与群组一样,先进入项目中再进行授权操作

设置当前用户的sshkey

        ssh的公钥放gitlab里私钥留在客户端

Deploy Keys

        部署秘钥只有下载权限的Keys并对全局有效,主要用于jenkins,需要管理权限设置

计划管理

        主要用于项目负责人建立任务计划并分配成员任务和后期跟踪

        (首先要进入对应的项目里进行设置)

        关联并分配任务

分配完任务后,对应的开发人员克隆master代码到本地并新建一个分支,开发完后推送新分支上去,并在gitlab中申请合并代码到master,然后有项目负责人通过即可合并完成, 最后gitlab中关闭对应任务(也可以提交时例如 git commit -m close #2 ,在合并master后会自动关闭第二个任务)。注意开发人员是不能自己直接推送master,只有项目负责人有权限

权限管理

        生产中往往会开通ldap统一账户管理中心
        Linux
            通过ssh登录需要生成免密的公钥,导入到gitlab中
            http登录可以通过设置好的账号密码
        Windos
            需要安装一个git客户端其他同Linux
        管理员
            Deploy Keys :只有下载权限的Keys,主要用于jenkins

  

gitlab的备份与恢复

备份

  vim /etc/gitlab/gitlab.rb  #修改配置文件
      gitlab_rails['backup_path']='/data/backup/gilab'  #指定备份路径,记得授权给git用户
      gitlab_rails['backup_keep_time']=604800   #备份有效时间,默认为7天,单位秒
  gitlab-ctl reconfigure  #修改完配置文件后执行命令使其生效
  gitlab-ctl restart  #重启服务
  创建目录并授权git用户
  crontab -l  创建计划任务备份全库
      0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create  #备份脚本,每天两点备份一次

恢复
    停止数据写入服务:
        gitlab-ctl stop unicorn
        gitlab-ctl stop sidekiq
  gitlab-rake gitlab:backup:restore BACKUP=1492296095  #载入备份数据,指定备份数据文件名字的时间戳部分
  gitlab-ctl restart

git

git 分布式版本控制

  • 与集中式版本控制svn对比

        1. Git是一个分布式版本控制系统,这意味着每个开发人员的电脑上都有一个完整的本地仓库副本,可以在没有网络连接的情况下进行版本控制操作,如提交、查看历史记录等;而SVN是一个集中式版本控制系统,所有数据都存储在一个中央服务器上,本地只保存一个版本,开发人员需要连接到中央服务器进行版本控制操作。

        2. 存储结构。Git将内容以元数据的形式存储,这种方式使得Git能够更高效地处理大量文件和历史记录。SVN则直接存储文件。

        3. 分支管理。Git在管理分支时更为灵活和高效,可以在同一个工作目录下快速切换不同的分支,而且Git的分支是指向特定提交的指针,创建和切换成本低。SVN的分支是目录的拷贝,创建和切换成本较高。

        4. 版本管理。Git使用SHA1算法为每个版本生成唯一的标识,这有助于追溯和验证历史记录的完整性。SVN有明确的版本号。

        5. 克隆目录速度。Git通常比SVN更快地进行克隆操作,尤其是在处理大量文件和历史记录时。

        6.易用性。SVN通常被认为更容易上手,适合新手使用。Git由于命令较多,被认为是较难学习的,但一旦掌握,可以执行更复杂的操作。

        7. 内容完整性。Git使用哈希算法存储文件,确保了内容的完整性,减少了在遇到故障和网络问题时对版本库的损坏风险。

安装

官网下载地址:https://git-scm.com/downloads

  • windows安装

        百度云盘下载:https://pan.baidu.com/s/1KiBxlnhwswPRPRY_B_Esww
        提取码:xbun

  • Linux安装

          方法一:yum安装版本比较老

                yum -y install git 
        方法二:编译安装较新版本
            (1)安装依赖
                      yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
            (2)下载解压
                      wget https://github.com/git/git/archive/v2.7.4.zip
                      unzip v2.7.4.zip
                      cd git-2.7.4
            (3)编译安装
                      make prefix=/usr/local/git all
                      make prefix=/usr/local/git install
                      rm -rf /usr/bin/git
                      ln -s /usr/local/git/bin/git /usr/bin/git
                      git --version

  • 配置用户名和邮箱:

        git config --global user.name 'NAME'
        git config --global user.email 'MAIL'
        git config --global --list  查看

git的四个区域与文件的四个状态

  • 四个区域:

        远程仓库:git push 到远程仓库的文件
        本地仓库:已生成版本的文件,git status不显示文件,可以用git log查看版本信息
        暂存区域:存档add的文件,git status显示为绿色
        工作目录:存放新文件和已修改的文件,git status显示为红色

  • 文件的四个状态:

        untracked  未纳入版本控制的状态
        unmodified 纳入本地仓库中(commit)
        modified  修改unmodified状态的文件,状态会变成modified的文件状态,并且从本地仓库回到工作目录中
        staged  纳入版本管理的文件(add);暂存区中

使用git

(1)进入,进入想要版本控制的代码所在目录

(2)提名,进行初始化操作(初始化命令:git init)。初始化后,会在当前目录自动创建 .git 文件夹,该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中,通过Git命令可以将所有版本保存在 .git 文件中,两条命令创建一个版本:

(3)管理,使用git status命令查看当前目录下文件状态

        

        git add FILENAME 添加指定文件到暂存区,FILENAME可以用.表示当前所有文件,这时颜色会变为绿色。

                

(4)生成版本。命令:git commit [-m]

        

(5)版本迭代

        修改index.txt内容然后提交代码生成新的版本

        

常用命令

补充知识:

      省略ID写法:

          1.写ID是可以只写ID从开头数至少4个字母                    

          2.HEAD写法需要大写:  
              HEAD FILENAME  取消add(追踪)操作,也就是取消暂存区操作,文件绿色变为红色
              HEAD^  复位到上一个版本(一个^表示复位一个版本,同理^^表示复位上两个版本)   
              HEAD~2  等同于 HEAD^^      
              例:
              git reset HEAD home/home.html
              git reset HEAD^^ home/home.html
              git reset HEAD~2 home/home.html

git
    --version
    init  初始化,并加入版本控制
    add  纳入版本管理(添加到暂存区)
    fetch  拉取
    commit
      -m #注释

#示例
git commit -m 'v1'


    status  检测当前文件夹下面的文件状态
        -s  状态概览
    diff  #对比两个版本的差异

        1.git diff 或者 git diff file:本地工作区和暂存区的diff信息

        2.git diff --cached 或 git diff --staged:暂存区和版本库的diff信息

        3.git diff commit1 commit2 或 git diff branch1 branch2 :版本库中不同commit、分支的diff信息
     
    log
      --author=''  过滤名字
      --pretty=oneline FILE  可查看文件的提交的id和改动注释
      -p FILE  查看文件具体修改的内容
      --oneline  查看简写日志
      --graph  查看版本路线
    rm  从版本库中移除
        --cached FILENAME  从暂存区中移除,并移出版本控制
    mv
    show ID  查看提交的详情,不加ID默认为最新版本信息
        


    reset  回滚,参考文档:https://blog.csdn.net/qq_39852676/article/details/129094985
      --soft ID  回滚版本库到指定ID,工作目录和暂存区不动
      --mixed ID  (默认)回滚版本库到指定ID,缓存区被清空
      --hard ID  回滚版本库到指定ID,暂存区和工作目录复位到ID的版本

    revert commitID #指定某次提交并作为新一次的提交


    reflog  查看包括reset完成时之前的记录和ID,然后可以再回滚回去  

          
        


    
    tag  查看标签(相当于做一次快照)
          -a  手动编写标签信息,默认加在最新一次的commit上  

          -m 编写备注信息
          ID  标签创建在此ID上
          -d TAGNAME  删除标签

分支管理   

    分支功能:只保存修改的文件,没有修改的会用指针指向源文件。可以节省空间并且创建版本更快

git
    branch  查看分支
        BRANCHNAME  创建分支
        -d BRANCHNAME  删除分支
        -D BRANCHNAME  强制删除
        -v
        --merge  查看已合并的分支
        --no-merge  查看未合并的分支

    checkout 切换指针

        1.git checkout:

                表示核查工作区相对于版本库修改过的文件

        2. git checkout  + 分支名:

                表示切换分支

        3. git checkout  -b  分支名:

                表示以当前分支的当前状态创建新分支并切换到新分支    -b 表示创建新分支

        4. git checkout -b 分支名  commitID:

                表示以当前分支的commitID提交节点创建新的分支并切换到新分支。此时工作区的内容和切换分之前commitID提交节点的内容一样

        5. git checkout  commitID:

                是以指定的提交节点创建了一个临时性分支,此临时性分支可用于做实验性修改

        6. git checkout  filename

            git checkout  . 

                工作目录中文件改动后,执行命令会把指定的文件还原成版本库相同。末尾如果是点‘.’则表示还原当前目录下所有文件为版本库

         7. git checkout <commit> filename:

                表示将工作区和暂存区都恢复到版本库指定提交版本的指定文件的状态,此时HEAD指针不变

checkout与reset对比

        reset的原理就是将头指针回退到上一个,其应用可以分成三个部分,soft,mixed,hard三种

        checkout的原理就是把当前代码更新成头指针指向的提交,其应用有两个,第一,切换分支。第二,更新当前内容。

    merge(master上执行)合并代码并提交
        BRANCHNAME #合并指定分支到当前分支,合并完成后当前分支会增加所有提交记录,包括其他分支的
        --abort  忽略其他代码,保留原分支代码(代码冲突;也可以手动修改)
    rebase   合并代码
      注释:区别于merge,rebase始把多条分支的提交记录合并成一个,并且日志查不到合并日志,merge是能查到包括合并在内的所有提交记录,但是非主分支上的提交记录并没有合并到主分支上,查看日志的时候是在非主分支上提取的
    clong URL BRANCH  远程克隆分支  
    reflog  查看包括reset完成时之前的记录和ID,然后可以通过checkout ID 切换指针,其他不变,可以新建分支合并还原

补充:
  安装谷歌访问助手
    octotree插件
      作用:可以树状显示仓库
      enhanced github
        作用:可查看单个文件的大小,并可以下载单个文件
      gitzip for github
        作用: 直接下载文件夹

补充

sourcetree:git的图形界面工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/323863.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql安装及基础设置

关系型数据库 MySQL是一种关系型数据库管理系统&#xff0c;采用了关系模型来组织数据的数据库&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;用户通过查询 sql 来检索数据库中的数据。 yum 方式安装 mysql # yum -y install mysql-server # systemctl start my…

Linux -- 日志

一 日志的重要性 在之前的编程经历中&#xff0c;如果我们的程序运行出现了问题&#xff0c;都是通过 标准输出 或 标准错误 将 错误信息 直接输出到屏幕上&#xff0c;以此来排除程序中的错误。 这在我们以往所写的程序中使用没啥问题&#xff0c;但如果出错的是一个不断在运行…

快速上手prometheaus grafana 监控

介绍 prometheaus 一个定时输出指标数据的巡检组件&#xff1f; grafana 一个读取指标&#xff0c;可视化的提供了好看界面的组件&#xff1f; 教程 如何和springboot项目集成 【IT老齐153】超级实用&#xff01;十分钟掌握Prometheus与Grafana监控SpringBoot应用_哔哩哔哩_…

计算机网络 备查

OSI 七层模型 七层模型协议各层实现的功能 简要 详细 TCP/IP协议 组成 1.传输层协议 TCP 2.网络层协议 IP 协议数据单元&#xff08;PDU&#xff09;和 封装 数据收发过程 数据发送过程 1. 2.终端用户生成数据 3.数据被分段&#xff0c;并加上TCP头 4.网络层添加IP地址信息…

luceda ipkiss教程 68:通过代码模板提高线路设计效率

在用ipkiss设计器件或者线路时&#xff0c;经常需要输入: from ipkiss3 import all as i3那么有什么办法可以快速输入这段代码呢&#xff1f;这里就可以利用Pycharm的 live template功能&#xff0c;只需要将文件&#xff1a;ipkiss.xml &#xff08;luceda ipkiss教程 68&…

Docker快速搭建NAS服务——FileBrowser

Docker快速搭建NAS服务——FileBrowser 文章目录 前言FileBrowser的搭建docker-compose文件编写运行及访问 总结 前言 本文主要讲解如何使用docker在本地快速搭建NAS服务&#xff0c;这里主要写如下两种&#xff1a; FileBrowser1&#xff1a;是一个开源的Web文件管理器&…

QT功能 实现静态内容国际化实验

文章目录 第一步&#xff1a;新建一个QT工程第二步&#xff1a;添加控件第三步&#xff1a;在pro文件中添加内容第四步&#xff1a;更新文件第五步&#xff1a;打开QT的Linguist第六步&#xff1a;添加翻译内容第七步&#xff1a;回到QT Creator中添加文件第八步&#xff1a;给…

软考中级-软件设计师(九)数据库技术基础 考点最精简

一、基本概念 1.1数据库与数据库系统 数据&#xff1a;是数据库中存储的基本对象&#xff0c;是描述事物的符号记录 数据库&#xff08;DataBase&#xff0c;DB&#xff09;&#xff1a;是长期存储在计算机内、有组织、可共享的大量数据集合 数据库系统&#xff08;DataBas…

微服务总览

微服务保护 微服务总览 微服务总览 接入层&#xff1a;反向代理功能&#xff0c;可以将用户域名访问的地址以负载均衡的方式代理到网关地址&#xff0c;并且并发能力非常高&#xff0c;并且会采用主备nginx的方式防止nginx寄了&#xff0c;备份nginx监控主nginx状态&#xff0c…

YOLOV5更换转置卷积,助力涨点!

由于转置卷积是nn库自带的,所以我们直接找到models文件夹中的yolo.py文件中的 parse_model函数,再在如下图的地方添加转置卷积模块 # YOLOv5 🚀 by Ultralytics, AGPL-3.0 license """ YOLO-specific modules.Usage:$ python models/yolo.py --cfg yolov5s.…

Spring AOP(2)

目录 Spring AOP详解 PointCut 切面优先级Order 切点表达式 execution表达式 切点表达式示例 annotation 自定义注解MyAspect 切面类 添加自定义注解 Spring AOP详解 PointCut 上面代码存在一个问题, 就是对于excution(* com.example.demo.controller.*.*(..))的大量重…

FPGA -手写异步FIFO

一&#xff0c;FIFO原理 FIFO&#xff08;First In First Out&#xff09;是一种先进先出的数据缓存器&#xff0c;没有外部读写地址线&#xff0c;使用起来非常简单&#xff0c;只能顺序写入数据&#xff0c;顺序的读出数据&#xff0c;其数据地址由内部读写指针自动加1完成&a…

案例研究|硬之城借助DataEase以数据驱动供应链精细化管理

深圳硬之城信息技术有限公司&#xff08;以下简称为“硬之城”&#xff09;成立于2015年&#xff0c;专注电子元件供应链领域&#xff0c;定位于电子产业供应链与智造平台。硬之城通过名为“Allchips”的集成式服务平台&#xff0c;为客户提供一站式的电子元件采购和供应链管理…

ROS八股总结

1. 概述 ROS系统是为了提高机器人研发中的软件复用率&#xff0c;每个模块可以被单独设计与编译&#xff0c;运行时以松耦合的方式结合在一起。提供硬件抽象、底层驱动、消息传递、程序管理、应用原型等功能和机制。且集成了大量工具、库、协议 2.特点 点对点 节点单元分布式…

动态规划——路径问题:LCR 166.珠宝的最高价值

文章目录 题目描述算法原理1.状态表示&#xff08;题目经验&#xff09;2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现CJava 题目描述 题目链接&#xff1a;LCR 166.珠宝的最高价值 算法原理 1.状态表示&#xff08;题目经验&#xff09; 对于这种路径类的问题&…

【全开源】Java外卖霸王餐免费吃外卖小程序+APP+公众号+H5多端霸王餐源码

一、特色功能 霸王餐活动管理&#xff1a;允许商家发布和管理霸王餐活动&#xff0c;包括设置活动时间、具体优惠、活动规则等。用户参与与浏览&#xff1a;用户可以在小程序中浏览霸王餐活动列表&#xff0c;查看活动的详情信息&#xff0c;如商品或服务的免费赠送、活动规则…

zookeeper启动 FAILED TO START

注意&#xff1a;启动zookeeper时&#xff0c;需要使用zkServer.sh start命令将所有主机启动后&#xff0c;再查看状态 如果&#xff0c;启动一台主机&#xff0c;查看当前主机状态&#xff0c;则会报错 如果出错&#xff0c;进入到$ZOOKEEPER_HOME/logs&#xff0c;查看日志 …

【C++】深入剖析C++11 initializer_list 新的类功能 可变模板参数

目录 一、std::initializer_list 1、std::initializer_list是什么类型 2、std::initializer_list 的应用场景 ①给自定义容器赋值 ② 传递同类型的数据集合 二、新的类功能 1、默认成员函数 2、关键字default 3、关键字delete 三、可变参数模板 一、std::initialize…

信创基础软件之中间件

信创基础软件之中间件 中间件概述 中间件是一种应用于分布式系统的基础软件&#xff0c;位于应用与操作系统、数据库之间&#xff0c;主要用于解决分布式环境下数据传输、数据访问、应用调度、系统构建和系统集成、流程管理等问题&#xff0c;是分布式环境下支撑应用开发、运…

读取打包到JAR中的文件:常见问题与解决方案(文件在但是报错not find)

读取打包到JAR中的文件&#xff1a;常见问题与解决方案 喝淡酒的时候&#xff0c;宜读李清照&#xff1b;喝甜酒时&#xff0c;宜读柳永&#xff1b;喝烈酒则大歌东坡词。其他如辛弃疾&#xff0c;应饮高梁小口&#xff1b;读放翁&#xff0c;应大口喝大曲&#xff1b;读李后主…