zoukankan      html  css  js  c++  java
  • 【git】之使用shell脚本提交代码

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

    #!/bin/sh
    # @author Hubal  
    # @Email Hubal@123.com
    # @createBy 2018-11-30
    # Shell脚本提交git代码 简单,快速,高效
    # 
    author = Hubal
    echo ' >>>>>> start push <<<<<< '  
    echo " ====== 当前分支 ====== "  
    branch= git branch
    echo $branch 
    
    # 判断参数1是否包含参数2
    contains_str(){
        # echo " >>> $1 <<< "
        # echo " <<< $2"
        
        contains_result=$(echo $1 | grep "${2}")
        if [[ -n $contains_result  ]] ; then
              return 1
          else
              return 0     
        fi
        
    }
    
    git_add(){
        echo ">>>>>> 执行 git add 之前,本地文件状态如下 <<<<<<"
        git status 
        statusResult=$(git status)
        no_change="nothing to commit"
    
        contains_str "$statusResult" "$no_change"
    
        if [[ $? == 1 ]]; 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 "
    "
        read -p "请输入远程分支名称,默认是当前分支: " branch_params
        push_result="";
        if [[ -z $origin_params && -z $branch_params ]]; then
            echo ">>>>>> push origin $current_branch"
            sleep 5 
            git push origin $current_branch 
    
        elif [[ -n $origin_params && -n $branch_params ]]; then
            echo ">>>>>> push $origin_params $branch_params"
            sleep 5 
            git push $origin_params $branch_params
    
        elif [[ -z $origin_params && -n $branch_params  ]]; then
            echo ">>>>>> push origin $branch_params"
            sleep 5 
            git push origin $branch_params
    
        elif [[ -n $origin_params && -z $branch_params  ]]; then
            echo ">>>>>> push $origin_params $current_branch"
            sleep 5 
            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 [[ $? != 1 ]]; 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 "当前分支: 
     $(git branch) "  
        git_add;
        git_commit;
        git_push;
        exit;
    fi
  • 相关阅读:
    redis在redhat上的的安装和登录
    redis主从复制以及数据同步的原理
    redis持久化的认识和使用注意点
    redis慢查询的简单认识和事务、订阅的认识
    第三章redis键的管理以及操作认知
    第二章redis数据类型的使用和介绍
    第一章 redis学习的简单介绍和简单的功能使用
    mysql第一次学习和使用
    第七章 mysql 事务索引以及触发器,视图等等,很重要又难一点点的部分
    第六章 MySQL 查询
  • 原文地址:https://www.cnblogs.com/gyjx2016/p/10058209.html
Copyright © 2011-2022 走看看