• git


    git分布式版本管理系统

    gitlab git私库解决方案

    GitHub git公有库解决方案

    git安装

    依赖安装:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

    tar xf git-2.7.4.tar.gz

    cd git-2.7.4

    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

    初始化

    mkdir test 

    cd test 目录将会被版本控制

    git init

    git config --global user.name "lwb" 添加名字

    git config --global user.email 346978526@qq.com 添加邮箱

    git config --list 查看配置信息

    git log

    四个区域:远程仓库 本地仓库 暂存区域 工作目录

    四种状态:untracked unmodified modified staged

            untracked:未被追踪的文件 即新文件 在工作目录 本地目录

            unmodified:未被修改状态 在本地仓库

            modified: 已修改状态 拉回工作目录

            staged:暂存区文件  在暂存区域  

    常用命令:

    git add 加入暂存(索引区)

    git status 查看状态

    git status -s 状态概览

    git diff 对比 尚未暂存的文件

    git diff --staged 暂存区文件对比

    git commit 提交更新

    git rest 回滚

    git rm 从版本库中删除文件

    git rm --cached 从暂存区中移除

    git mv 相当于mv  git rm git add三个命令

    测试:

    vim index.html

    git status  有一个未被追踪的文件 index.html 在工作目录

    git add index.html 加到暂存区

    git commit -m "first commit"  所有的文件提交到本地仓库  -m注释

    git log看一下操作日志

    touch pay.html

    vim pay.html  在工作目录

    git add pay.html 加入到暂存区

    git rm --cached pay.html 从暂存区删除退回到工作区域

    分支管理

    创建分支 分支名为about:  git branch about

    切换分支:git checkout about

    查看:git status

    touch about.html

    vim about.html

    git add .

    git status

    git commit -m 'about'

    git log 会发现有3次提交

    git checkout master 切回master还是只有2次提交

    git log

    git branch 查看工作在哪个分支

    git checkout about 切回about分支

    git branch -v  详细查看分支

    git branch -d about 删除about分支

    切回master

    git merge about master about分支的提交merge合并过master

    git branch --merged 查看哪些分支已经被merged过来了

    git branch --no-merged 查看没被merged过来的分支

    测试

    git branch test

    git checkout test

    vim test.html

    git add ./

    git commit -m 'test commit' ./

    git log

    git checkout master

    git branch --no-merged

    git高级管理

    git checkout --file.txt 撤销对文件的修改

    git checkout master

    vim index.html 修改

    git status 修改之后会放到工作区

    git checkout -- index.html   撤销刚才的修改

    git status  工作区已经没有文件了

    cat index.html 刚才的修改也撤销了

    git reset回滚本地仓库文件 commit级的reset

    git reset --hard 5d37841cd7ca953bb 本地仓库回滚到id5d37841cd7ca953bb   

    参数: --hard 工作目录和暂存区跟着本地仓库一起回滚

         -- soft 缓冲区和工作目录都不会改变

         --mixed 默认选项,工作目录不会回滚,缓冲区和本地仓库会回滚

    git log  回滚之前的commit已经没有

    文件级的reset

    git reset foo.py

    将当前在缓存区的foo.py移除出去

    git reflog  回滚到指针

    git checkout 692a770 切换到 four commit指针时刻,

    git branch reset 建分支 建好之后指针在 four commit

    git stutas  (到了four commit指针)

    git checkout reset 切到reset分支 此时reset也到four commit的提交

    git log

    git checkout master

    git log 还是 second commit

    git merge reset 同步mergereset分支的指针

    git log  master分支已经mergereset

    git远程:

                   git  add             git commit                  git  push

    workspace工作区 ------> index暂存区 ------------> repository本地仓库 ------------>remote 远程仓库

                    git fetch/clone               checkout版本回滚 reset            

    remote 远程仓库 -------------------> repository 本地仓--------------> workspace 工作区

                    git pull下载

    remote 远程仓库 ------------> workspace工作区

    cd ~

    git clone https://github.com/guohongze/scripts.git   远程remote仓库pull下来 初始化

    cd scripts/

    git status

    vim README.md

    git add ./  放到缓存区

    git commit -m 'readme update' . 提交到本地仓库

    git remote -v 查看远程仓信息

    origin https://github.com/guohongze/scripts.git (fetch)

    远程库名简写   远程仓库名

    git push origin master 上传到远程仓库

         远程仓库名  master分支

    git pull  拿下来会合并到当前分支

    git fetch 代码拿下来不会合并到当前分支

    cd test

    git remote -v 没有远程信息

    git remote add origin http://192.168.81.30/lwb.git 添加远程仓库

    git remote -v 已经加上远程仓库

    git remote add gitlab http://192.168.81.30/lwb.git 可以加上多个远程仓库

    git remote -v

    git push gitlab test

    远程仓库名简写 分支为test

    echo "# scripts" >> README.md

    git init

    git add README.md

    git commit -m "first commit"

    git remote add origin https://github.com/leiwenbin627/scripts.git

    git push -u origin master

    添加tag

    git tag --help

    git tag  查询tag

    git tag -a v1.0 -m "feature finished”  给当前指针添加tag  

           tagv1.0  -m:注释

    gitlab安装

    基于git的源码托管解决方案 基于tuby on rails开发 集成了nginx postSQL reis sidekiq 等组件

    镜像来源 https://mirrors.tuna.tsinghua.edu.cn/

    https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

    安装依赖:yum install curl policycoreutils openssh-server openssh-clients -y

    systemctl enable sshd

    systemctl start sshd

    yum install postfix -y

    systemctl start postfix

    systemctl enable postfix

    rpm -ivh gitlab-ce-8.9.11-ce.0.el7.x86_64.rpm

    改配置文件

    vim /etc/gitlab/gitlab.rb

    external_url 'http://192.168.81.20'

    gitlab-ctl show-config 验证配置文件

    gitlab-ctl restart  重启

    gitlab-ctl reconfigure 重置配置文件并启动

    登录

    192.168.81.20:80  密码随便设置,用户为root

    主控命令

    gitlab-ctl --help

    gitlab-ctl status/start/stop/restart

    gitlab-ctl tail nginx 看日志

    /var/log/gitlab/  日志路径

    组件:

    nginx:

    gitlab-shell 处理git命令和修改authorized keys

    gitlab-workhorse 反向代理服务器

    logrotate  日志管理工具

    postgresql  数据库

    redis 缓存

    sidekip: 执行后台任务 异步

    unicorn gitlab rails运用托管在上面的服务

    目录

    /var/opt/gitlab/git-data/repositories/root/ 库默认存储目录

    /var/opt/gitlab/ 程序文件

    创建工程

    扳手--->new group -->app01--->private --->create  创建app01

    private:需要授权才能访问项目

    internal:登录gitlab系统的人能访问项目

    public:能访问gitlab都能访问项目

    组的访问形式:http://192.168.81.20/java/app1.git

                ssh git@192.168.81.20:java/app1.git   

    -->项目

    -->成员user

    扳手 --->project 创建项目 java

    扳手 -->new user ---> 创建pm dev1 dev2

    权限: 左边 ---->profile settings -->ssh key

    开发者dev1/dev2的权限仅限于项目里的developer, 项目管理员pm权限在组里groupmaster

    打通linux

    cd .ssh/

    ssh-keygen

    cat id_rsa.pub 拷贝公钥 粘贴到key

    选择group -->选择 dev1 角色:Developer dev2也加进去,角色developer  dev1/dev2权限就在java组里

    选择 project -->选择 project manage access --> pm加成master dev1/dev2加成developer -->add user to project

    添加密码: user -->dev1 -->edit-->password添加密码 dev2 pm都要加密码 这是加的初始密码 用户登进的时候要改密码  实际环境中用ldap验证

    账号登录-->添加key (如果组里面添加了key就不需要加了)

    测试 git clone git@192.168.81.20:java/app1.git

    上传代码

    先用rootmaster

    root登系统 ,选择project,点+-->new file 创建提交。master分支出现

    回到 devlinux系统上,用git pull 拉下分支

    打通windows

    windows安装:

    选第二个 windows选项

    安装完之后在一个目录里面打开 git bash here

    比如:/d/job

    创建秘钥ssh-keygen 秘钥对在C:UsersAdministrator.ssh

    将公钥粘贴给dev2key

    然后在window目录里执行 git clone git@192.168.81.20:java/app1.git 然后进入的clone 下来的目录进行操作 git branch

    deploy key

    只能下载代码,不能上传代码,给jenkins用的,Jenkins只下载代码,不上传代码

    通过root登录-->扳手--->下面小齿轮

    做一个开发计划

    项目:app1 版本v1.0

    需求: 首页 新闻 支付 关于

    开发者: dev1开发首页 新闻

           dev2开发支付 关于

    完成日期:首页 8.29

              新闻 8.30

              支付 8.31

              关于 8.30

    先重置pm的密码,然后用pm账号登录管理分配开发计划

    左边 milestones -->new milestones --> java/app01

    title:官网v1.0   日期9.1 -->create milestones

    new issue --》首页 ---》日期 8.29 开发者 dev1 -->submit提交 然后都加进去

    然后用 dev1登录系统可以看到任务分配下来了 点小铃铛

    然后准备开发

    app1目录下

    git checkout -b shouye 创建并切换到分支

    echo "<h1>shou ye</h1>" > index.html  模拟开发首页

    git add .

    git commit -m 'shou ye commit 1' 开发完成传到本地仓库

    git push origin shouye 传到gitlab

    然后登录gitlab查看reposity 在点branchs 可以看到分支和提交情况

    合并到master

    merge request --> assigneepm  mileston选官网v1.0 -->submit提交merge

    然后用pmgitlab 查看 点小铃铛 --->accept merge request  代码合并到主干master

    然后点repository -->commits   查看提交情况   repository ---> branches看分支情况

    开发完,用dev1 登录系统, issues -->首页 -->mark done 已完成

    pm登录查看, 点击mailstone 可以看到进度进了一个  点project --issues -->点首页 --》点close issue

    继续开发第二个任务

    git checkout master

    git log

    git pull 更新dev2开发者主干master

    git log

    开始开发

    git checkout -b news 创建分支并切换到分支

    echo "news center" > news.html  开发中

    git add . 提交

    git commit -m "close #2" 提交到本地仓库 close #2意思是merge完之后自行关闭issues

    git push origin news 提交到gitlab

    用开发者dev1登录gitlab

    projects -->create merge request -->submit提交merge

    pm登录gitlab--->projects-->merge requests--->accept merge

    在点repository -->commits可看到提交情况

    然后 project --> 下面点branches可看到shouye news都合并来了,然后再看 issues 可看到新闻自己关闭了

    只有master 才能pull合并到主干gitlab

    git checkout master  切换到master 分支

    git pull 合并gitlab主干

    备份管理

    vim /etc/gitlab/gitlab.rb

    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" 备份路径,可修改

    gitlab_rails['backup_keep_time'] = 604800  保留604800秒的数据,即保留7天的数据,

    mkdir -p /data/backups/gitlab 自动给git权限

    gitlab-ctl reconfigure 让修改的配置生效

    gitlab-ctl restart

    定时备份

    0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

    date -d @1566979103  date -d翻译时间戳

    恢复

    删项目测试 扳手-->edit project ---> remove project

    恢复过程

    gitlab-ctl stop unicorn

    gitlab-ctl stop sidekiq

    gitlab-rake gitlab:backup:restore BACKUP=1566979103(备份的时间戳)

    gitlab-ctl restart

    代码存放:/var/opt/gitlab/git-data/repositories

    邮件配置

    gitlab_rails['time_zone'] = 'Asia/Shanghai'

    gitlab_rails['gitlab_email_enabled'] = true

    gitlab_rails['gitlab_email_from'] = '346978526@qq.com'

    gitlab_rails['gitlab_email_display_name'] = 'gitlab'

    gitlab_rails['smtp_enable'] = true

    gitlab_rails['smtp_address'] = "smtp.qq.com"

    gitlab_rails['smtp_port'] = 25

    gitlab_rails['smtp_user_name'] = "346978526@qq.com"

    gitlab_rails['smtp_password'] = "she5216600she521"

    gitlab_rails['smtp_domain'] = "qq.com"

    gitlab_rails['smtp_authentication'] = "login"

    source tree

    路径: app1ssh路径

    source tree上开发

    点分支 about

    app1目录里创建about.html

    然后再看sourcetree

    about.html 暂存

    sourcetree -->工具 --> 一般 配上名字 dev2

    点提交 加注释 close #4

    然后pm登录gitlab

    project -->app1 -->tag -->new tag -->v1.0 -->create tag

    repository --> tags 可以看到发布的版本

    sourcetree -->master--> 拉取origin/master

    ntpdate times.aliyun.com 阿里云时间服务

  • 相关阅读:
    apache-kylin 权威指南—读书笔记
    数据仓库之数据仓库环境——读书笔记
    R 语言—基本绘图
    MapReduce 过程分析
    HDFS 的运行机制
    R 语言贷款月供数据分析
    UML 简介笔记
    为什么要学习 UML?
    scrum 项目的基本模式
    elasticsearch 集群配置
  • 原文地址:https://www.cnblogs.com/leiwenbin627/p/11425605.html
Copyright © 2020-2023  润新知