服务器运维-git

  • Git基本操作

  • 问题:
  • 快速搭建好一台git服务器,并测试该版本控制软件,要求如下:
  • 安装git软件
  • 创建版本库
  • 客户端克隆版本库到本地
  • 本地工作目录修改数据
  • 提交本地修改到服务器
  • 步骤:
    1. 部署git服务器(192.168.2.100作为远程git服务器)
  • 安装git软件
  • [root@pc207 logs]# yum -y install git
  • 初始化一个空仓库
  • [root@pc207 logs]# mkdir /var/git
  • [root@pc207 logs]# git init /var/git/project --bare
  • [root@pc207 logs]# ls /var/git/project/
    branches config description HEAD hooks info objects refs
    1. 客户端测试(192.168.2.200作为客户端主机)
  • 使用git常用指令列表
  • clone:将远程服务器的仓库可控到本地
  • config:修改git配置
  • add:添加修改到暂存区
  • commit:提交修改到本地仓库
  • push:提交修改到远程服务器
  • [root@pc207 opt]# git clone root@192.168.2.100:/var/git/project
    1. 在本地工作区对数据进行增删改查(必须要先计入仓库再操作数据)
  • [root@pc207 project]# echo “init date” > init.txt
    [root@pc207 project]# mkdir demo
    [root@pc207 project]# cp /etc/hosts demo
    1. 查看仓库中数据的状态
  • [root@pc207 project]# git status
    1. 将工作区的修改提交到暂存区
  • [root@pc207 project]# git add .
    1. 将暂存区修改提交到本地仓库
  • [root@pc207 project]# git config --global user.email “wufan@qq.com”
    [root@pc207 project]# git config --global user.name “wufan”
    [root@pc207 project]# cat $HOME/.gitconfig
    [user]
    email = wufan@qq.com
    name = wufan
    [root@pc207 project]# git commit -m “haha”
    1. 将本地仓库中的数据推送到远程服务器(web2将数据推送到web1)
  • [root@pc207 project]# git config --global push.default simple
  • [root@pc207 project]# git push
    1. 将服务器上的数据更新到本地(web1的数据更新到web2)
  • [root@pc207 project]# echo “haha” >> init.txt
  • [root@pc207 project]# git add .
  • [root@pc207 project]# git commit -m “yiyi”
  • [root@pc207 project]# git push
  • [root@localhost project]# git pull
    1. 查看版本日志
  • [root@pc207 project]# git log
  • [root@pc207 project]# git log --pretty=online
  • [root@pc207 project]# git log --oneline
  • [root@pc207 project]# git reflog
  • head指针操作

  • 问题:
  • 查看git版本信息
  • 移动指针
  • 通过移动head指针恢复数据
  • 方案:
  • head指针是一个可以在任何分支和版本移动的指针,通过移动指针我们可以将数据还原到任何版本。每做一次提交操作都会导致git更新一个版本,head指针也跟着自动移动。
  • [root@pc207 project]# git reflog
    f72bd60 HEAD@{0}: commit: yiyi
    f9d47dc HEAD@{1}: commit: test
    eea6269 HEAD@{2}: commit (initial): haha
    提示:当前head指针为head@0
    [root@pc207 project]# git reset --hard eea62
    HEAD is now at eea6269 haha
    [root@pc207 project]# git reflog
    eea6269 HEAD@{0}: reset: moving to eea62
    f72bd60 HEAD@{1}: commit: yiyi
    f9d47dc HEAD@{2}: commit: test
    eea6269 HEAD@{3}: commit (initial): haha
  • 分支管理

  • 常见的分支规范:
  • master分支(是主分支,是代码核心)
  • develop(是新开发成果的分支)
  • release(是发布新产品设置的分支)
  • hotfix(是修复软件bug去缺陷的分支)
  • feature(为开发新功能设置的分支)
  • 查看并创建分支
  • [root@pc207 project]# git status
  • [root@pc207 project]# git branch -v
  • 创建分支
  • [root@pc207 project]# git branch hotfix
    [root@pc207 project]# git branch feature
    [root@pc207 project]# git branch -v
    feature f72bd60 yiyi
    hotfix f72bd60 yiyi
    master f72bd60 yiyi
  • 切换并合并分支
  • [root@pc207 project]# git checkout hotfix
  • [root@pc207 project]# git checkout hotfix
    Switched to branch ‘hotfix’
    [root@pc207 project]# git branch
    feature
    hotfix
    master
  • 在新的分支下可以继续进行数据操作
  • [root@pc207 project]# echo “fix bugs” > fix.txt
    [root@pc207 project]# git add .
    [root@pc207 project]# git commit -m ‘fix a bug’
  • 将hotfix修改的数据合并到master分支
  • 合并前必须要切换到master分支,然后再执行merge命令
  • [root@pc207 project]# git checkout master
    Switched to branch ‘master’
    [root@pc207 project]# git merge hotfix
    Updating f72bd60…79e2042
    Fast-forward
    fix.txt | 1 +
    1 file changed, 1 insertion(+)
    create mode 100644 fix.txt
  • 解决半分分支的冲突问题
  • 在不同分支中修改相同文件的相同行数据,模拟数据冲突
  • git服务器

  • 问题:
  • 创建ssh协议服务器
  • 创建git协议服务器
  • 创建http协议服务器
    1. ssh协议服务器
  • [root@pc207 project]# ssh-keygen -f /root/.ssh/id_rsa -N ‘’
  • 非交互式创建秘钥
  • [root@pc207 project]# ssh-copy-id root@192.168.2.100
    1. git协议服务器(只读操作的服务器)
  • 安装git-daemon软件包
  • [root@pc207 logs]# yum -y install git-daemon
  • 修改配置/usr/lib/systemd/system/git@service
  • [root@pc207 system]# vim /usr/lib/systemd/system/git@.service
  • 7 ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/git --export-all --user-path=public_git --syslog --in etd --verbose
  • 将base-path改为仓库路径
  • 启动服务
  • [root@pc207 system]# systemctl start git.socket
  • 用客户端测试
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值