【git】之使用shell脚本提交代码
为减少提交步骤,防止提交错误,使用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脚本提交代码的更多相关文章
- 通过shell脚本实现代码自动化部署
通过shell脚本实现代码自动化部署 一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打 ...
- Myeclipse如何使用自带git工具向远程仓库提交代码(转)
Myeclipse如何使用自带git工具向远程仓库提交代码 第一步:将改动的代码标记 项目右键:team->synchronize workspace 点击确定 项目右键>add to g ...
- Apache下通过shell脚本提交网站404死链
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...
- shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time... shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...
- 采用shell脚本统计代码的行数
刚毕业那会儿有一次去台湾公司面试,我问多行代码怎么写.我从来没有想过这个问题,粗略计算,.惊叹:大概几十万行不行. 最近整理资料,看着eclipse左边全面上市,我觉得这个东西.代码共同拥有的行倒底总 ...
- mac链接linux终端,shell脚本发布代码
项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码 一.使用ssh链接上linux服务端 1.cd ~/.ssh 2.vi config,按照下面的内容配置config文件,然后: ...
- git创建仓库,并提交代码(第一次创建并提交)(转)
一直想学GIT,一直不曾学会.主要是GUI界面的很少,命令行大多记不住.今天尝试提交代码,按GIT上给的方法,没料到既然提交成功了. 于是把它记下来,方便以后学习. 代码是学习用的,没多大意义: 下图 ...
- Git创建远程分支并提交代码到远程分支
1.可以在VS中新建分支 2.可以通过git branch -r 命令查看远端库的分支情况 这些红色都是远程的分支 3.从已有的分支创建新的分支(如从master分支),创建一个dev分支 (不用vs ...
- Myeclipse如何使用自带git工具向远程仓库提交代码
先看一下Myeclipse自带的git工具 本人是在码云上面注册的账号,上面有项目的仓库,将仓库的项目克隆到本地之后,在myeclipse中导入该项目. 那么如何将修改后的代码再提交到码云上面? 第 ...
随机推荐
- where are you?
#version_s#1.2#version_e# #update_s#https://files.cnblogs.com/files/dyh221/rank0410.zip#update_e#
- rest参数与扩展运算符
rest参数与扩展运算符 rest参数 当遇上这样一种需求:对于输入的参数,求和返回,但传入的参数个数并不确定. // 在es5中,通常是使用函数自身的arguments对象实现的 function ...
- CentOS Linux 升级内核步骤和方法(转)
当前系统为CentOS Linux release 6.0 (Final),内核版本为2.6.32-71.el6.i686.由于最近内核出现最新的漏洞(linux kernel 又爆内存提权漏洞,2. ...
- 学习笔记--python中使用多进程、多线程加速文本预处理
一.任务描述 最近尝试自行构建skip-gram模型训练word2vec词向量表.其中有一步需要统计各词汇的出现频率,截取出现频率最高的10000个词汇进行保留,形成常用词词典.对于这个问题,我建立了 ...
- WEB学习笔记3-开发环境和工具
WEB前端集成开发环境:Aptana Studio和WebStormWEB前端代码调试:IE浏览器自带的IE Dev Toolbar,Chrome浏览器自带的Developer Tools,Firef ...
- git教程:添加远程仓库
转自: 添加远程仓库 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过 ...
- iOS TabelViewCell 删除 编辑 插入
/** TableView 进入或退出编辑状态(TableView 方法). */ - (void)setEditing:(BOOL)editing animated:(BOOL)animate{ / ...
- ubuntu 16.04 编译安装 amule (开启GUI)
安装依赖 $ -dev libgeoip-dev zlib1g-dev libupnp-dev libboost-all-dev libwxbase3.-dev libwxgtk3.-dev buil ...
- JDBC中执行SQL语句的方式
一.执行DDL.DML语句 DDL.DML分别表示数据库定义语言.数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法. 代码如下: public static ...
- java 删除多层文件夹
/** * 因为不小心,写了一个死循环,在电脑里创建的了n多层空文件夹 * 并且手动最外层删除不掉. * 所以用写了本代码,从里向外的进行删除操作. * @author Singularity * @ ...