zoukankan      html  css  js  c++  java
  • git版本控制软件

    一、基础配置

    1、安装
    ]# yum install -y git

    2、配置用户信息
    配置用户联系方式:名字、email
    ]# git config --global user.name "Mr.Zhang"
    ]# git config --global user.email "zk@qq.com"

    配置写日志使用的文本编辑器
    ]# git config --global core.editor vim

    查看配置信息
    ]# git config --list
    user.name=Mr.Zhang
    user.email=zk@qq.com
    core.editor=vim

    ]# cat ~/.gitconfig
    [user]
    name = Mr.Zhang
    email = zk@qq.com
    [core]
    editor = vim

    二、应用
    1、git的三个工作区域
    工作区:编写程序的目录
    暂存区:保存工作区文件到版本库之间的缓冲地带
    版本库:保存每次提交的代码。在工作区中有一个.git的目录,它就是版本库

    2、创建git工作区
    (1) 全新创建
    ]# git init gittest # 将会出现gittest目录
    初始化空的 Git 版本库于 /root/gittest/.git/

    (2) 已存在目录
    ]# mkdir devops
    ]# cd devops/
    devops]# echo 'hello world' > a.txt
    devops]# git init .
    初始化空的 Git 版本库于 /root/devops/.git/
    devops]# ls -A # 可以查看到版本库.git
    a.txt .git

    2、在工作目录中加入新文件、修改a.txt
    devops]# cp /etc/hosts .
    devops]# echo '2nd line' >> a.txt
    devops]# git status # 查看状态,修改后新文件未加入到版本库里
    # 位于分支 master
    #
    # 初始提交
    #
    # 未跟踪的文件:
    # (使用 "git add <file>..." 以包含要提交的内容)
    #
    # a.txt
    # hosts
    提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

    3、发现工作区中有未跟踪的文件,添加它们到暂存区
    devops]# git add hosts # 加入指定文件
    devops]# git add . # 把当前目录中所有文件加入跟踪
    devops]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    # (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    # 新文件: a.txt
    # 新文件: hosts
    #

    4、如果hosts是错误加入到暂存区的,可以根据git status提示,删除暂存区文件
    devops]# git rm --cached hosts
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    # (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    # 新文件: a.txt
    #
    # 未跟踪的文件:
    # (使用 "git add <file>..." 以包含要提交的内容)
    #
    # hosts

    5、提交暂存区的文件到版本库
    devops]# git add . # 将工作区所有文件加入到暂存区
    devops]# git commit # 在跳出的vim中写入日志
    devops]# git status # 干净的工作区
    # 位于分支 master
    无文件要提交,干净的工作区

    6、继续编写程序,版本库添加一个文件
    devops]# cp /root/anaconda-ks.cfg .
    devops]# git add .
    devops]# git commit -m "add new file /root/anaconda-ks.cfg"
    devops]# git status
    # 位于分支 master
    无文件要提交,干净的工作区

    7、查看版本库历史
    devops]# git log

    分支管理
    1、git仓库中包含了一个默认的分支叫master
    2、假如你正在编写代码,突然收到一个通知,代码有bug。我们的项目有很多人一起在开发,
    可以指定某个人修改bug,其他人继续编写程序
    3、正常编写程序的人员,仍然在master分支上工作,修改Bug的程序员新建一个分支,当bug
    修复完成,再把他的分支合并到master上即可
    新分支b1-->修复bug,C4
    /
    /
    project(master分支) --> C1 --> C2 --> C3 --------------> master
    (1) 生成新的分支,注意生成新分支的时候,master一定要是干净的
    devops]# git branch b1 # 分支名为b1
    devops]# git branch # 查看所有分支,当前所在分支前面有*
    b1
    * master

    (2) 原有程序员继续在master分支上工作
    devops]# cp /etc/motd .
    devops]# git add .
    devops]# git commit -m "add motd"

    (3) 修复bug的程序员切换到分支b1上修复问题

    (4) 切换到b1分支
    devops]# git checkout b1
    devops]# ls # 当前目录没有motd文件

    (5) 修复bug
    devops]# echo '3rd line' >> a.txt
    devops]# git add .
    devops]# git commit -m "insert to a.txt"

    (6) 合并b1分支到主干
    devops]# git checkout master
    切换到分支 'master'
    devops]# cat a.txt # 文件中有两行
    devops]# git merge b1 # 合并b1分支到master
    devops]# cat a.txt # 文件中有三行

    (7) 如果b1分支确定不再使用,可以将其删除
    devops]# git branch -d b1
    devops]# git branch # 只有master分支

    !!!!注意:切换checkout执行前务必保证status状态是干净的!

    切换到以前版本
    1、查看提交
    devops]# git log # 每个commit后有一个ID号
    2、通过ID号切换到历史某一次提交
    devops]# git checkout 938eabb249956517d14b83829bd716d42b8f934c
    注意:在历史提交中不要直接修改内容,如果需要修改,可以创建分支进行修改
    3、回到最新状态
    devops]# git checkout master

    gitlab服务器
    1、创建一台虚拟机,内存至少给4G
    node1: 192.168.4.1 安装上docker并启动服务
    2、导入docker镜像
    node1 images]# docker load < gitlab_zh.tar
    3、因为启动的容器需要用到22端口,所以将虚拟机的ssh服务绑定到其他端口
    node1 ~]# vim /etc/ssh/sshd_config
    Port 2222
    node1 ~]# systemctl restart sshd
    devops]# ssh -p2222 node1
    4、启动一个gitlab容器
    node1 ~]# docker run -d -h gitlab --name gitlab -p 443:443
    -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab
    -v /srv/gitlab/logs:/var/log/gitlab
    -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh:latest
    5、查看状态
    node1 ~]# docker ps # 直到状态显示healthy,容器才能正常使用
    6、浏览器访问http://x.x.x.x/ (虚拟机地址)
    第一次登陆需要设置密码,用户名是root
    7、重要概念
    (1) 群组group: 可以给每个组织、团队创建一个group
    (2) 成员member:每个用户对应一个用户,用户加到group中。
    (3) 项目project: 一个团队可以开发很多软件项目,每个软件项目对应gitlab上的项目
    8、创建名为devops的组、名为devops的项目和一个用户
    再将用户添加到devops项目中,成为“主程序员”角色
    9、切换成新用户,上传代码
    (1) 方法一:上传代码可以采用http的方式,但是每次上传代码都需填写用户名和密码
    (2) 方法二:通过ssh密钥,实现免密登陆、上传
    在客户端生成密钥(真机)
    ]# ssh-keygen -t rsa -C "zzg@tedu.cn" -b 4096
    ]# vim ~/.ssh/id_rsa.pub 复制公钥 (粘贴到git项目秘钥里)
    根据gitlab项目中的提示,上传代码
    ]# cd devops/ # 切到项目目录
    将远程仓库改名,原名为origin,新名为old-origin
    真机 devops]# git remote rename origin old-origin
    如果出现以下错误,可以忽略
    error: 不能重命名配置小节 'remote.origin' 到 'remote.old-origin'
    将本地仓库添加到远程服务器
    真机 devops]# git remote add origin git@192.168.4.1:devops/devops.git
    推送代码到服务器
    真机 devops]# git push -u origin --all # 推代码
    真机 devops]# git push -u origin --tags # 推送标签tag
    后续操作:本地编写代码,提交到git版本库,推送到服务器
    真机 devops]# cp /etc/issue .
    真机 devops]# git add .
    真机 devops]# git commit -m "add issue"
    真机 devops]# git push #查看git版本库是否多一个文件

    如果推送的时候报错:permission error,解决方案如下:
    真机 devops]# eval $(ssh-agent)

  • 相关阅读:
    那些离不开的 Chrome 扩展插件
    Spring Boot 实战 —— 入门
    Maven 学习笔记
    Linux lvm 分区知识笔记
    Linux 双向 SSH 免密登录
    CentOS Yum 源搭建
    Ubuntu 系统学习
    iOS 测试三方 KIF 的那些事
    Swift 网络请求数据与解析
    iOS Plist 文件的 增 删 改
  • 原文地址:https://www.cnblogs.com/mkmkmk/p/12177861.html
Copyright © 2011-2022 走看看