• gitlab的环境搭建及使用


    gitlab的环境搭建及使用

    1. 环境搭建

    1.1 安装:

    os: centos7

    切换root进行下面操作:

    yum install -y curl policycoreutils-python openssh-server #安装SSH协议
    systemctl enable sshd #设置SSH服务开机自启动
    ystemctl start sshd #启动SSH服务
    yum -y install wget
    yum -y install vim
    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.5.7-ce.0.el7.x86_64.rpm #添加gitlab镜像
    rpm -i gitlab-ce-10.5.7-ce.0.el7.x86_64.rpm #安装Gitlab
    
    

    1.2 修改配置:

    修改gitlab配置文件指定服务器ip和自定义端口:

    vim  /etc/gitlab/gitlab.rb #修改gitlab配置文件指定服务器ip和自定义端口:
    ...
    external_url 'http://gitlab.domain.com:10000'
    nginx['listen_port'] = 10000
    
    postgresql['shared_buffers'] = "256MB" #减少 postgresql 数据库缓存
    sidekiq['concurrency'] = 1 #减少sidekiq的并发数
    
    

    1.3 启动

    重置gitlab配置:

    gitlab-ctl reconfigure
    

    启动gitlab:

    gitlab-ctl restart
    

    1.4 可能出现的问题

    gitlab无法访问站点:
    检测端口是都在监听
    获取所有监听的端口:

    netstat -aptn
    

    查看某一个端口是否开放:

    lsof -i:9001
    

    如果有值说明该端口正在被监听,如果没有则任何东西则没有被监听.

    修改配置后的执行顺序

    gitlab-ctl  stop
    gitlab-ctl  reconfigure
    gitlab-ctl  start
    

    如果端口被监听,防火墙未开启,仍无法访问,可尝试下面的操作:

    /sbin/iptables -I INPUT -p tcp --dport 9001 -j ACCEPT
    

    这里9001是我自定义的端口号,记得与nginx['listen_port'] 的端口号保持一致.

    2. gitlab使用

    2.1 注册账号

    访问自己配置的url连接-->输入超管密码,两次确认.

    默认超管用户为root

    点击register注册普通用户.

    2.2 创建项目

    Projects-->New project 创建新的项目
    生成项目后,点击项目名,选择setting:

    配置权限:

    选择-->general: 选择文件类型 public|private|internal

    分配人员:

    选择-->members:

    可以选择单个人,角色,和访问截止时间

    2.3 生成客户端的ssh公钥:

    ssh-keygen -t rsa -C "xxxxx@qq.com"
    

    一路回车,确认

    cd ~/.ssh
    ls 
    cat id_rsa.pub
    

    复制公钥到gitlib:
    登录gitlab,点击setting-->ssh keys
    将上面的公钥复制到key.注意不能有多余的空格

    注意:如果不设置密码的话,以后git clone 可以直接执行,如果设置密码的话,以后git clone 的时候都会输入密码

    3. git的常用命令

    3.1 下载安装

    官网下载安装包安装

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
    

    3.2 .将普通目录变成本地版本库

    git init #将普通的目录变成版本库
    

    新增一个文件

    git add index.html #新增了一个文件,标记这个文件是需要新增的
    

    提交文件

    git commit -m "这是一段提交的描述"
    

    查看当前提交状态

    git status
    

    3.3 版本回退

    查看所有的提交记录

    git log
    git log --pretty=oneline #将所有的记录放到一行中
    

    回退上一个版本:

    git reset --hard HEAD^ #这种写法不必知道上一个版本的commit id,返回两个版本就是HEAD^^
    

    回退到指定版本:

    git reset --hard commitid #这个commit的是具体的id,可以不写全,写不重复的前几位就可以
    

    在回滚一会想恢复到现在最新的版本,只需使用上面的方法,如果不知道commit id,已经查不到了,可以用 一下的方法

    git reflog
    

    可以查看你执行过的每一条记录和所在的版本

    3.4 工作区和暂存区

    • 工作区:

      工作区就是执行git init 的所在目录

    • 版本库:

      工作区内有一个.git文件夹,这个文件夹就是版本库,.git文件里存储着我们操作git的记录

    • 暂存区:

      工作区编辑一行代码后如果想保存这种状态,需要先使用 git add 将代码放到以个中转站,这个中转站就是暂存区,好处是,你可以一次commit多个文件,暂存区可以有效的减少提交到版本库的次数

      git status #可以查看文件的状态
      

    3.5 撤销修改

    在没有进入到版本库之前,存在暂存区或者修改了但是没有add的文件,可以使用一下方法,撤销所有操作到原始状态

    git checkout --file # file是具体的文件名,一定要加-- ,不加的话表示切换分支
    

    3.6 删除文件

    删除操作跟修改操作类似,当你删除某个文件后,通过git status 可以查看,工作区文件和版本库文件不一致,

    如果没有commit ,想恢复的话,使用git checkout --file跟撤销修改一致,如果确定要删除并且删除版本库上的文件

    git rm  test.txt
    git commit -m"删除test.txt"
    

    3.7 添加远程仓库

    • 同步github

      • 创建ssh key:

        $ ssh-keygen -t rsa -C "youremail@example.com"
        

        在用户目录下有一个.ssh文件夹(winows是C:UsersAdministrator.ssh,linux ,mac在当前用户目录,cd 进入用户目录,然后cd .ssh,里面有id_rsa私钥,和id_rsa.pub

      • 登录github,点击右上角的头像,选择settings 打开了个人简介页,public profile,选择右侧的SSH and GPG keys, 右侧是新建一个ssh key,新建,打开页面,title任意填写, key,填写id_rsa.pub 里面的内容

    • 添加远程库:

      现有本地文件,需要同步到github,供别人合作使用:

      • 现在github上面,创建新的仓库: 头像右侧,有一个加号,点击,选择 new repository

      • 将本地的项目推送到github

        在github创建完仓库以后会有一个说明文档,如下

        按照以下操作执行:

        …or create a new repository on the command line
        echo "# git_practise" >> README.md
        git init
        git add README.md
        git commit -m "first commit"
        git remote add origin git@github.com:自己的git账户/项目名.git
        git push -u origin master#实际上是把当前分支master推送到远程
      

      -u 不仅吧主分支提交,各个分支都会提交

    3.8 克隆

    git clone xxxx
    

    3.9 分支管理

    • 创建与合并分支

      创建分支:

      git checkout  -b dev #创建dev(这个名字是随便取的)分支并切换(他会复制当前版本作为分支)
      git switch -c dev #同样是创建并其切换分支
      git branch dev# 仅创建分支不切换
      git switch dev #切换到分支
      git checkout dev #仅切换dev
      git branck #查看当前分支列表,带*,表示当前分支
      git merge dev #把另一个个分支合并当前分支,如果是想将分支dev合并到master,首先要定位到master
      git branch -d dev #合并完以后可以删除分支
      
    • 解决冲突

      当要分支合并主干的时候,因为分支和主干对同一文件都做了不同的改动,在合并的时候提示冲突,需要手动将代码整理好了以后再进行 add commit操作,最后删除分支

      使用git log查看分支合并情况

      git log --graph --pretty=oneline --abbrev-commit
      
    • 分支管理策略

      • master 分支应该是非常稳定的,平时开发不再上面做,仅作为发布版本使用
      • 团队协作时,开发新的版本时,每个人都有自己的一个分支,共同向一个dev分支去提交,然后dev去向master进行合并
    • bug分支

      • 场景:当开发的版本dev 以前的代码有bug需要commit到主干并上线,但是现阶段开发的代码又不能commit提交.

        tip: 解释: 不同的分支在开发时使用 git add进行添加文件的时候,不同的分支存放文件的位置都是暂存区,所以当在dev开发的时候,add 很多文件,切换到master分支,这些文件也是可以看到的,所以在master主干进行提交的话,会把分支的文件也提交了,所以出现问题时需要将这些add 文件封存.使用git stash

      • 解决方式:

          1. 查看暂存区是否有文件,如果有的话将现有的文件封存

            git stash
            $ git stash list #封存文件列表
            
          1. 创建bug分支

            git swtich -c issue
            
          1. 修改文件后,提交文件并删除问题分支
      • 恢复封存的文件:

        git stash pop #恢复的同时把stash内容删了
        git stash apply #恢复后stash不删除,需要git stash drop来进行删除
        
      • 修复的问题向其他分支进行提交:

        #获取已经提交文件的commit id
        #切换到同样要进行修复的分支
        #使用cherry-pick进行提交
        git cherry-pick 4c805e2#这个4c...是已经提交过的commitId
        
    • feature分支

      在日常开发中,有很多功能需要划分,分配到自己的时候,就需要根据需求建立一个feature分支,这个分支跟普通分支一样,只是因为功能划分,把他单独拿出来强调一下

      git switch -c feature-vulcan#创建分支
      git branch -D feature-vulcan #如果提交过文件并未合并分支的话,使用-d删除会报错,需要使用-D强制删除
      
    • 多人协作

      多人和做的时候需要个中央版本库,比如github,或者gitlab.

      git remote #查看远程库的信息
      git push origin master #推送主干
      git push origin dev #推送dev分支
      

      哪些分支需要推送,哪些不需要:

      • master分支是主分支,一定要同步
      • dev是开发分支,团队所有人都在这上面进行开发也需要同步
      • bug分支是自己修复问题创建的本地分支,不需要同步,但是修复后会合并到主分支或者dev分支,这是要提交的
      • feature 分支是按功能划分的分支,取决于这个功能是否与人合作,如果进自己开发没必要提交github,如果是多人合作开发,则需要提交同步

      多人协作工作模式:

      • git push origin branchName #推送自己的更改
        
      • git pull #如果冲突了则将版本库的代码拉下来,解决冲突在提交
        

    3.10 标签管理

    发布版本的时候,通常我们在版本库中带一个tag,标签相当于一个快照.同时tag也相当于给commitId取得一个别名.

    • 创建标签:

      git tag v1.0 # 首先要切换到需要打标签的分支上.然后再执行tag命令,默认标签是打在最新提交的commit上的
      git tag v0.9 f52c633# f52..这个是commitId,根据id打tag
      git show #查看标签,标签不是按照时间排序的,而是按照字母进行排序的.
      
    • 操作标签:

      git tag -d v1.0 #删除标签
      git push origin v1.0 #给远程推送版本号
      git push origin :refs/tags/v0.9 #删除远程的tag号
      
  • 相关阅读:
    栈和队列
    数组的遍历查找
    字符串的子串
    两个字符串
    字符串的遍历
    字符串的替换
    数组和矩阵
    Django 自带的ORM增删改查
    what's the CRSF ??
    Rabbitmq -Publish_Subscribe模式- python编码实现
  • 原文地址:https://www.cnblogs.com/callmelx/p/13138020.html
Copyright © 2020-2023  润新知