git-自动化脚本

2023-10-30

首先我们要从https://github.com/github 上申请一个GitHub仓库。(过程就不介绍了)

现在我们来写个git的自动回滚脚本-通过版本号来回滚代码。

cat /usr/local/src/git.sh
#!/bin/bash
#author:xiaozhagn
mail_user="1179570cab@qq.com"
WORK_DIR=/learngit/
REPLOY="zrh"
SRC_DIR=/data  #已存在
IP=172.25.0.31
GITHUB=git@github.com:xiaozhagn/zrh.git
send_mail () {
   echo "$1" | mail -s "Gits current version" $mail_user
}
git_pull(){
    if [ ! -d $WORK_DIR ];then
        mkdir $WORK_DIR
    fi
}
git_add_tag(){
   git_pull
   tag_num=$(($(git tag | wc -l)+1))
   tag_deploy="v$tag_num.0"
   git tag -a $tag_deploy -m "$tag_deploy"
   git push -f
   git push --tag
}
git_deploy(){
   rsync -vzrtopg --progress $WORK_DIR/$REPLOY/* $IP:$SRC_DIR
   cd $WORK_DIR/$REPLOY
   tag_status=$(git tag | tail -n 1)
   echo "$tag_status" 
   send_mail $tag_status
   ssh 172.25.0.31 ln -s $SRC_DIR /web/
}
git_reset(){
    PS3="Select a number: "
    cd $WORK_DIR/$REPLOY
    while true ; do
    read -p "Does  reset your version yes/no": input
        if [ $input == yes ]; then
           select rollback in  "quick rollback" "rollback you need version"; do
                case $rollback in
                   "quick rollback")
                      git   reset --hard HEAD^
                      git   push -f
                      tag1_status=$(git tag | tail -n 1)
                      send_mail  $tag1_status
                      echo  $tag1_status
                   
  quit
                      ;;
                   "rollback you need version" )
                      list_version=$(git tag)
                      select  version  in $list_version ; do
                      gti reset --hart $version
                      git push -f
                      tag2_status=$(git tag | tail -n 1)
                      send_mail  $tag2_status
                      echo  $tag2_status
                      break
                      done ;;
                  esac
           done
 else
               if [ $input == no ]; then
                exit
               fi
               if [ $input == * ] ; then
               echo "Please  yes or on"
               fi
        fi
done
}
line(){
 echo "Please echo \"main\""  
 echo "If you check your script file please input \"git_add_tag/git_deploy/git_reset again\" " 
 }
line
main(){
   git_add_tag
   git_deploy
   git_reset
}
$1


转载于:https://blog.51cto.com/xiaozhagn/1968620

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git-自动化脚本 的相关文章

  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • Git post-receive - 如何检查推送的分支是否与主分支合并

    在我们的团队中 我们通常将所有任务推送到单独的分支中 然后发布经理审查这些分支并将它们合并到 主 分支中 有时团队成员忘记将他们的分支与主分支合并 在推送之前 所以我想做的是 在用户推送后输出一条消息 请与主分支合并 我想我需要检查一些内容
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • git 如何查找分支源自的提交哈希

    假设我从主分支分支到主题分支 然后在主题分支上进行了一些提交 是否有命令告诉我主题分支源自的主分支上的提交哈希 理想情况下 我不必知道我做了多少次提交 试图避免 HEAD 5 我已经用谷歌搜索过 但似乎无法找到答案 谢谢 use git m
  • 为什么“git描述-dirty”在描述干净结帐时添加“-dirty”后缀?

    我刚刚发现 dirty选项git describe看起来它应该做一些非常有用的事情 即在输出中附加一个后缀git describe当工作树脏时 但是在我的一些存储库上似乎并非如此 git status On branch 8 30 noth
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 结帐时出现 Git 错误:“致命:引用不是树”

    当我决定弄清楚为什么我正在从事的项目如此重要时 这一切就开始了 我运行了以下脚本 git rev list objects all git cat file batch check objecttype objectname objects
  • Git:忽略版本控制文件

    gitignore 文件对于忽略一些我们不想控制的文件非常有用 不幸的是 当文件已处于版本控制之下时 它无法使用 例如 我的 gitignore 已添加到 git 中 文件可能与我的同事想要的不同 例如我想忽略 Vim 文件 每当我对此文件
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • 我如何才能看到 Github 风格的东西,例如 git -repo 的打孔卡和时间线?

    我正在寻找一个可以可视化 git repo 工作的软件 我喜欢 Github 的一些功能和 Bitbucket 的一些功能 所以我不想使用它们 因为它们并不完美 我正在寻找创建类似视觉特征的方法 下面你可以找到一些部分 但仍然缺少很多谜题
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错

随机推荐

  • web服务器:SOAP,WSDL,UDDI

    一 web服务简介 Web Services是一个可以将应用程序变为Web应用程序 将自己本地的应用程序信息通过网络 发布到网络中 让别人通过浏览器访问本地信息 Web Services的技术主要建立在XML的规范之上 保证了这一体系结构的
  • Pycharm缓存文件占满C盘

    地址 C Users 12135 AppData Local JetBrains
  • R包学习——reshape包中melt、cast、merge函数用法

    目录 1 melt Melt an object into a form suitable for easy casting 2 cast Cast a molten data frame into the reshaped or aggr
  • 三极管

    截止区 放大区 饱和区 放大电路 三极管工作在 放大区 一般不用三极管做放大电路 原因是三极管的可变电阻特性不容易调 运算放大器 开关电路 发射集 一般不加 下拉电阻 a 三极管工作在 截止区 Vout 0v 或 饱和区 Vout Vcc
  • 【node】 8、http搭建服务器模块(创建自己的第二个网站)

    创建自己的第一个网站 11 html h2 我的网站首页 h2 a href wdjl 我的简历 a h3 我的作品 h3 h3 我的学习 h3 h3 我的家乡 h3 h3 我的就业 h3 img src img alt 22 html a
  • 查看linux系统的磁盘大小、内存大小和CPU内核数的命令

    查看磁盘 df Th 查看内存 单位是GB free g 以总和的形式查询内存的使用信息 free t 单位是MB free m 或者用下面的命令 查看linux系统内存的大小 显示单位是MB dmidecode t memory grep
  • 给你 2 万条数据,怎么快速导入到 MySQL?写得太好了...

    一 前言 前两天做了一个导入的功能 导入开始的时候非常慢 导入2w条数据要1分多钟 后来一点一点的优化 从直接把list怼进Mysql中 到分配把list导入Mysql中 到多线程把list导入Mysql中 时间是一点一点的变少了 非常的爽
  • Java实现xlsx文件下载和文件上传

    Java实现xlsx文件下载和文件上传 文件下载 xlsx下载案例 直接上代码 注 header的文件头编码要设置好否则可能会出现乱码 public void downloadTemplate HttpServletRequest requ
  • Git如何上传代码到远程仓库(Gitee&Github)

    1 前提是下载好了git并且配置好了环境 首先在gitee上面建立一个新的远程仓库 2 建立好仓库后 在本地新建一个文件夹 3 打开文件夹后 鼠标单击右键选择Git Bash Here 打开git后将新建的远程仓库clone到该文件夹下 c
  • 处理kdevtmpfsi挖矿病毒

    发现CPU直接100 php root hadoop002 tmp systemctl status 25177 session 5772 scope Session 5772 of user root Loaded loaded run
  • stm32 IAP + APP ==>双剑合一

    扩展 IAP主要用于产品出厂后应用程序的更新作用 上一篇博文详细的对IAP 升级程序做了详细的分析http blog csdn net yx l128125 article details 12992773 考虑到出厂时要先烧写IAP 再烧
  • vue 动态引入第三方js和css

    页面中经常会用到第三方库的情况 直接全局引入到html文件会造成资源浪费 实现在需要的页面动态加载 动态加载css文件 param url param isCache export function loadCSS url isCache
  • 2021山东省职业院校技能大赛“网络空间安全”赛题及赛题解析(超详细)

    2021年中职组 网络空间安全 赛项 2021年中职组山东省竞赛任务书 模块 A 基础设施设置与安全加固 200分 模块B 网络安全事件响应 数字取证调查和应用安全 400分 模块C CTF夺旗 攻击 200分 模块D CTF夺旗 防御 2
  • QT 图片透明度

    设置图片的透明度 方式一是底部参考文章的内容 方式二是因为取值范围为0 0 1 0 所以在方式一的基础上稍加修改 方式三是 QPainter 自己的透明度设置函数 加载图片 QPixmap m pixmap QPixmap m pixmap
  • CSS学习案例(16):网易云音乐导航栏

    网易云音乐官网点这里 原版 自己做的 网易云logo图标和搜索放大镜图标 在阿里巴巴矢量图标库找 div class container div class top div class content div class logo a hr
  • 如何发送和接收RTP封包的H264,用FFmpeg解码

    这篇文章给大家介绍怎么打包H264分片到RTP包 并且实现一个播放程序演示接收RTP包和用FFmpeg解码 为了让大家更了解H264打包成RTP的细节 有必要罗嗦一下向大家介绍一些相关的基础知识 下面分三节介绍 其中前面两节是基础知识 第三
  • android setWebChromeClient和setWebViewClient的使用区别

    开发中我发现两个控件的使用 由于我做的开发依旧是前期开发 所以功能比较简单 在这里我使用的webView空间一般是使用的如下这个方法 webView setWebViewClient new webViewClient 然后新建一个内部类实
  • c++ 编码转化

    UTF 8到GB2312的转换 char U2G const char utf8 int len MultiByteToWideChar CP UTF8 0 utf8 1 NULL 0 wchar t wstr new wchar t le
  • 软件测试入门第一步【测试用例】

    测试用例 是指对一项特定的软件产品进行测试任务的描述 体现测试方案 方法 技术和策略 内容包括测试目标 测试环境 输入数据 测试步骤 预期结果 测试脚本等 并形成文档 每个具体测试用例都将包括下列详细信息 编制人 审定人 编制日期 版本 用
  • git-自动化脚本

    首先我们要从https github com github 上申请一个GitHub仓库 过程就不介绍了 现在我们来写个git的自动回滚脚本 通过版本号来回滚代码 cat usr local src git sh bin bash autho