为减少提交步骤,防止提交错误,使用Shell脚本进行git提交不失一件好事

#!/bin/sh
# @author Hubal
# @Email Hubal@123.com
# @createBy --
# Shell脚本提交git代码 简单,快速,高效
#
author = Hubal
echo ' >>>>>> start push <<<<<< '
echo " ====== 当前分支 ====== "
branch= git branch
echo $branch # 判断参数1是否包含参数2
contains_str(){
# echo " >>> $1 <<< "
# echo " <<< $2" contains_result=$(echo $ | grep "${2}")
if [[ -n $contains_result ]] ; then
return
else
return
fi } git_add(){
echo ">>>>>> 执行 git add 之前,本地文件状态如下 <<<<<<"
git status
statusResult=$(git status)
no_change="nothing to commit" contains_str "$statusResult" "$no_change" if [[ $? == ]]; then
echo "=== 当前没有新增或者修改的文件 ==="
git_push
exit
fi read -p "是否确定add?Y|N : " add_params
if [[ $add_params == "Y" || $add_params == "y" ]]; then
git add .
else
exit
fi
} git_commit(){
echo ">>>>>> 执行 git commit 之前,本地文件状态如下 <<<<<<"
git status
read -p "是否确定commit?Y|N : " commit_params
if [[ $commit_params == "Y" || $commit_params == "y" ]] ; then
read -p "请输入commit信息: " commit_msg
if [ -z $commit_msg ] ; then
git commit -m "git commit by $author" .
else
git commit -m $commit_msg .
fi
elif [[ $commit_params == "N" || $commit_params == "n" ]] ; then
exit
else
exit
fi
} git_push(){
echo ">>>>>> 执行 git push 之前,本地文件状态如下 <<<<<<"
git status
current_branch=$(git symbolic-ref --short -q HEAD)
echo ">>>>>> 当前分支:$current_branch <<<<<<"
read -p "是否确定push?Y|N : " push_confirm
if [[ $push_confirm != "Y" && $push_confirm != "y" ]]; then
echo ">>>>>> end push <<<<<<"
exit
fi
read -p "请输入远程git地址别名,默认是origin: " origin_params
echo -e "\n"
read -p "请输入远程分支名称,默认是当前分支: " branch_params
push_result="";
if [[ -z $origin_params && -z $branch_params ]]; then
echo ">>>>>> push origin $current_branch"
sleep
git push origin $current_branch elif [[ -n $origin_params && -n $branch_params ]]; then
echo ">>>>>> push $origin_params $branch_params"
sleep
git push $origin_params $branch_params elif [[ -z $origin_params && -n $branch_params ]]; then
echo ">>>>>> push origin $branch_params"
sleep
git push origin $branch_params elif [[ -n $origin_params && -z $branch_params ]]; then
echo ">>>>>> push $origin_params $current_branch"
sleep
git push $origin_params $current_branch
else
echo ">>>>>> end push <<<<<<"
fi } read -p "默认push当前分支,Q代表quit,其他单词代表切换分支 : " branch
if [[ $branch == "Y" || $branch == "y" || -z $branch ]] ; then
# echo "你输入的是: $branch "
statusResult=$(git status)
to_commit="Changes to be committed"
contains_str "$statusResult" "$to_commit"
if [[ $? != ]]; then
git_add;
else
git add .
echo " ====== 本地没有需要add的文件,直接commit ====== "
fi
git_commit;
git_push;
exit; elif [[ $branch == "Q" || $branch == "q" ]] ; then
# echo "你输入的是: $branch ,代表退出当前操作!"
exit
else
git checkout $branch
echo -e "当前分支: \n $(git branch) "
git_add;
git_commit;
git_push;
exit;
fi

【git】之使用shell脚本提交代码的更多相关文章

  1. 通过shell脚本实现代码自动化部署

    通过shell脚本实现代码自动化部署 一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打 ...

  2. Myeclipse如何使用自带git工具向远程仓库提交代码(转)

    Myeclipse如何使用自带git工具向远程仓库提交代码 第一步:将改动的代码标记 项目右键:team->synchronize workspace 点击确定 项目右键>add to g ...

  3. Apache下通过shell脚本提交网站404死链

    网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...

  4. shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)

    既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time...    shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...

  5. 采用shell脚本统计代码的行数

    刚毕业那会儿有一次去台湾公司面试,我问多行代码怎么写.我从来没有想过这个问题,粗略计算,.惊叹:大概几十万行不行. 最近整理资料,看着eclipse左边全面上市,我觉得这个东西.代码共同拥有的行倒底总 ...

  6. mac链接linux终端,shell脚本发布代码

    项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码 一.使用ssh链接上linux服务端 1.cd ~/.ssh 2.vi config,按照下面的内容配置config文件,然后: ...

  7. git创建仓库,并提交代码(第一次创建并提交)(转)

    一直想学GIT,一直不曾学会.主要是GUI界面的很少,命令行大多记不住.今天尝试提交代码,按GIT上给的方法,没料到既然提交成功了. 于是把它记下来,方便以后学习. 代码是学习用的,没多大意义: 下图 ...

  8. Git创建远程分支并提交代码到远程分支

    1.可以在VS中新建分支 2.可以通过git branch -r 命令查看远端库的分支情况 这些红色都是远程的分支 3.从已有的分支创建新的分支(如从master分支),创建一个dev分支 (不用vs ...

  9. Myeclipse如何使用自带git工具向远程仓库提交代码

    先看一下Myeclipse自带的git工具  本人是在码云上面注册的账号,上面有项目的仓库,将仓库的项目克隆到本地之后,在myeclipse中导入该项目. 那么如何将修改后的代码再提交到码云上面? 第 ...

随机推荐

  1. Linux 驱动——Button8(输入子系统)

    输入子系统由驱动层.输入子系统核心.事件处理层三部分组成.一个输入事件,如鼠标移动.键盘按下等通过Driver->Inputcore->Event handler->userspac ...

  2. Linux 驱动——Button驱动4(fasync)异步通知

    button_drv.c驱动文件: #include <linux/module.h>#include <linux/kernel.h>#include <linux/f ...

  3. iOS代码块block使用

    代码块的本质是和其他的变量类似,不同的是,代码块存储的数据是一个函数体.使用代码块,你可以像调用其他标准函数一样的调用,可以传入参数,并得到返回值.     脱字符是代码块的语法标记.下图表示代码块的 ...

  4. python基础1-转自金角大王

    Python之路,Day1 - Python基础1---转自金角大王   本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 ...

  5. git同步遇到报错

    git同步遇到报错 “fatal: unable to access ‘https://github.com/ruanwenwu/newp.git/‘: Peer reports incompatib ...

  6. ubuntu编译安装opencv

    简易安装opencv2: conda install --channel https://conda.anaconda.org/menpo opencv 或: sudo apt-get install ...

  7. 【Linux】scp指令

    语法: scp [可选参数] file_source file_target 参数说明: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用I ...

  8. 西门子SCL读写DB数据

    数据块间接寻址方式,仅供参考. STATUS_1:= DB11.DW[COUNTER]; //字节间接寻址STATUS_2:= DB12.DX[WNO, BITNO]; //位间接寻址,用户改变WNO ...

  9. python学习之初识字符串

    刚接触一门语言时,字符串是很容易遇到的, 例如要从读入或者写出, 字符串与数字间的转换等. 由于字符串, 列表和元组等类型具有一定的共性(由对象组成的序列,如字符串是字符序列), 在Python中统称 ...

  10. C语言权威指南和书单 - 适用于所有级别

    注:点击标题免费下载电子书 所有级别 1. The C Programming Language (2nd Edition) 2. C: A Reference Manual (5th Edition ...