爲減小提交步驟,防止提交錯誤,使用Shell腳本進行git提交不失一件好事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 "\n" 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 "當前分支: \n $(git branch) " git_add; git_commit; git_push; exit; fi