首页 > 系统相关 >shell 写一个简单的 git 提交代码脚本

shell 写一个简单的 git 提交代码脚本

时间:2022-09-21 02:33:05浏览次数:96  
标签:shell branch -- echo git 提交 提测 分支

背景

工作中,默认提测分支叫 staging,每次提测,都需要将开发分支合并到 staging 提测分支,并 push,才算提测,当修复一些 bug  之后,免不了反复执行同一套 git 命令,于是写一个简单的 shell 脚本,减少重复工作。

注意

本脚本仅适用于开发分支合并到提测分支(目标分支),并 push,没有做过多的判断和条件限制,如个人有需要,可扩展为适用于自己的脚本。

#!/bin/bash
# git快速提交脚本
# 主要实现功能为
# 1. 从当前分支或开发分支提交代码,push,
# 2. 切到提测分支或指定要合入的分支
# 3. 合并 master 分支
# 4. 合并该开发分支
# 5. 切回到开发分支

# 使用方式:控制台输入 sh commit.sh -m "fix:xxx" -b devbranch -t targetbranch -f "src/xxx"
# -m 传入 commit 信息,字符串传参,不可有空格
# -b 传入当前所在分支,主要用于合并分支使用,不传默认在当前分支下提交代码
# -t 传入要合入的目标分支,不传默认合并到提测分支 staging
# -f 传入 提测文件,不传全部修改都提交

# 合并如果有冲突,脚本会自动停止执行,需要手动解决冲突后,提交代码,切换到开发分支

# 当脚本中的任何一行执行失败就退出
set -e
# 定义默认要合并的开发分支为当前分支
branch=$(git rev-parse --abbrev-ref HEAD)
# 定义默认目标分支为 staging
target="staging"
while getopts ":f:b:m:t" opt; do
  case $opt in
  f)
    file=$OPTARG
    echo ${file}
    ;;
  b)
    branch=$OPTARG
    echo ${branch}
    ;;
  m)
    message=$OPTARG
    echo ${message}
    ;;
  t)
    target=$OPTARG
    echo ${target}
    ;;
  ?)
    echo "未知参数"
    exit 1
    ;;
  esac
done
# if [ ! ${branch} ]; then
#   echo "请输入分支名称,格式为 -b xxx "
#   exit 1
# fi
git checkout ${branch}
git status
if [ ${file} ]; then
  git add ${file}
else
  git add .
fi
# 如果传入 commit message,则传入 message
if [ ${message} ]; then
  git commit -m ${message}
else
  # 否则写默认
  git commit -m " feat:提测"
fi
git push
# 判断本地是否已经检出合并的目标分支,如果不存在退出
if git rev-parse --verify ${target}; then
  git checkout ${target}
else
  echo "不存在 ${target} 分支,请先在本地检出该分支,退出"
  exit 1
fi
echo "切到 ${target}"
# 拉取最新
git pull
# 如果未合并master,先merge
git merge --no-ff --commit --log origin/master -m "git merge origin/master"
# 合并开发分支
git merge --no-ff --commit --log ${branch} -m "merge ${branch}"
# push
git push
echo "切回开发分支"
git checkout ${branch}

 

标签:shell,branch,--,echo,git,提交,提测,分支
From: https://www.cnblogs.com/beileixinqing/p/16714264.html

相关文章

  • Git 安装
    本文根据Git详细安装教程(详解Git安装过程的每一个步骤)_mukes的博客-CSDN博客_git安装安装一、Git安装包下载下载地址为 git-scm.com或者gitforwindows.org,后一个仅有......
  • linux登入式与非登入式shell
    登入相关配置文件登入式shell与非登入式的区别登入式与非登入式shell的开启方式参考资料登入相关配置文件拿centos7环境举例,bash相关的配置文件主要分为全局配置文......
  • powershell 7 初体验
    支持枚举定义,类定义\类继承\接口继承,不支持接口定义\泛型类定义\泛型函数定义,但是作为shell脚本已经相当让人惊喜了,基本逻辑可以直接套用C#语法格式#enum_sample/main.......
  • Git常用命令
    相关资料:廖雪峰教程链接Git远程操作详解Git查看、删除、重命名远程分支和tag操作流程日常使用git更新提交代码的一般流程是这样的:在对代码进行了一些修改之后,使用:g......
  • Shell命令
    1.shell命令的执行机制:fork+exec执行命令(任何的shell都会执行)2.shell中的用户输入处理1命令行参数:选项、参数2运行时输入3read命令:41.基本读取、52.超时......
  • git pull问题 git config pull.rebase false
    错误如下:Unabletopullbecauseyourlocalandremotebrancheschanged.SetyourpreferredGitbehaviorforhowtoreconciledivergedbranchesinGitsettings......
  • 常用的Shell脚本
    1、Dos攻击防范(自动屏蔽攻击IP)#!/bin/bashDATE=$(date +%d/%b/%Y:%H:%M)LOG_FILE=/usr/local/nginx/logs/demo2.access.logABNORMAL_IP=$(tail -n5000 $LOG_FILE |g......
  • 几个Git仓库开源软件的比较
    特性gitlabgitblitgitbucketgogsgitolite公开库√√√√√私有库√√√√√在线编辑√×√××wiki√√√√×issue√√......
  • 快速搭建 Git 服务器[Windows版]
    服务器搭建下载下载JDK:https://www.oracle.com/technetwork/java/javase/downloads/下载Gitblit:http://gitblit.com/解压解压缩下载的压缩包即可,无需安装。创......
  • 国内外主流的 Git 代码托管网站
    国内外主流的Git代码托管网站#国外的三大Git代码托管平台都支持 DevOps,国内的主流托管平台均支持 DevOps 或者有条件(付费)支持.1.GitHub#https://github.......