zoukankan      html  css  js  c++  java
  • 001_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)

  • 相关阅读:
    获取程序Appdelegate中无需释放的特定控制器,非新建-------IOS
    IOS传值---属性传值、代理委托传值(delegate)传值、单例传值、block传值
    Tableview最后一行无法显示或者显示不全的问题IOS
    IOS中的懒加载lazyLoad
    IOS中NSUserDefaults的用法(轻量级本地数据存储)
    NSNotification与NSNotificationCenter
    洛谷2756 飞行员配对方案问题
    bzoj4551 [HEOI2016]树
    洛谷2114 bzoj3668[NOI2014]起床困难综合症
    洛谷1345 [Usaco5.4]奶牛的电信
  • 原文地址:https://www.cnblogs.com/luwei0915/p/10536037.html
Copyright © 2011-2022 走看看