git 提交偷懶方法

我從來就是個懶人。

使用git提交的時候,敲一堆命令,繁瑣得很。
首先可以定義別名縮短鍵入的指令

git config --global alias.st status
git config --global alias.ci commit
git config --global alias.df diff
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.mg merge

btw,這樣還是沒解決問題啊,還是很煩啊。
試試看能不能寫個sh腳本,自動提交呢?
有想法就做他,于是有了下面的腳本。

#!/bin/sh
#定義變量
# 用戶自己分支
G_GIT_BRANCH="your_branch"
G_GIT_MASTER_BRANCH="master"
G_GIT_PATH=$(pwd)
echo  "\033[32m 路徑:$G_GIT_PATH  \033[0m"
echo  "\033[32m 分支:$G_GIT_BRANCH  \033[0m"

cd $G_GIT_PATH

function checkGitStatus
{
    STR1="nothing to commit, working tree clean"
    STR2="no changes added to commit"
    STR3="Changes not staged for commit"
    STR4="Changes to be committed"
    STR5="both modified: "
    STR6="Untracked files:"
    OUTTYPE=-1
    out=$(git status)
    result=$(echo $out | grep "$STR5")
    if [[ "$result" != "" ]];then
        OUTTYPE=5
    fi
    if [ "$OUTTYPE" == "-1" ];then
        result=$(echo $out | grep "$STR1")
        if [[ "$result" != "" ]];then
            OUTTYPE=1
        fi
    fi
    if [ "$OUTTYPE" == "-1" ];then
        result=$(echo $out | grep "$STR6")
        if [[ "$result" != "" ]];then
            OUTTYPE=6
        fi
    fi
    if [ "$OUTTYPE" == "-1" ];then
        result=$(echo $out | grep "$STR2")
        if [[ "$result" != "" ]];then
            OUTTYPE=2
        fi
    fi
    if [ "$OUTTYPE" == "-1" ];then
        result=$(echo $out | grep "$STR3")
        if [[ "$result" != "" ]];then
            OUTTYPE=3
        fi
    fi
    if [ "$OUTTYPE" == "-1" ];then
        result=$(echo $out | grep "$STR4")
        if [[ "$result" != "" ]];then
            OUTTYPE=4
        fi
    fi
    if [ "$OUTTYPE" == "-1" ];then
        result=$(echo $out | grep "$STR5")
        if [[ "$result" != "" ]];then
            OUTTYPE=5
        fi
    fi
    if [ "$OUTTYPE" == "1" ];then
        git status
        echo "本地沒什么可提交的了."
        echo "選擇操作 1:Pull master 2:退出"
        read choose
        if [ $choose = "1" ];then
            echo "執行:git checkout $G_GIT_MASTER_BRANCH"
            ret=$(git checkout $G_GIT_MASTER_BRANCH )
            #判斷本地是否還有未提交的??
            echo "執行:git pull origin $G_GIT_MASTER_BRANCH"
            git pull origin $G_GIT_MASTER_BRANCH
            echo "執行:git checkout $G_GIT_BRANCH"
            git checkout $G_GIT_BRANCH
            echo "選擇操作 1:Merge主分支 2:退出"
            read choose
            if [ $choose = "1" ];then
                echo "執行:git merge $G_GIT_MASTER_BRANCH"
                ret=$(git merge $G_GIT_MASTER_BRANCH)
                #TODO:檢查是否有沖突
                kstr="conflicts" #沖突
                result=$(echo $ret | grep "$kstr")
                if [[ "$result" != "" ]];then
                    echo "發現沖突"
                    exit 2
                fi
                echo "選擇操作 1:提交到自己分支 2:退出"
                read choose
                if [ $choose = "1" ];then
                    echo "執行:git push origin $G_GIT_BRANCH"
                    git push origin $G_GIT_BRANCH
                    echo "結束,退出腳本"
                    exit 2  
                else
                    echo "退出腳本"
                    exit 2  
                fi
            else
                echo "退出腳本"
                exit 2  
            fi
        else
            echo "輸入錯誤,退出腳本"
            exit 2  
        fi
    elif [ "$OUTTYPE" = "2" ]||[ "$OUTTYPE" = "6" ];then #
        git status
        echo "發現有修改"
        echo "選擇操作 1:執行'git add -A' 2:退出手動處理"
        read choose
        if [ $choose = "1" ];then
           git add -A
        elif [ $choose = "2" ];then
            echo "手動提交,退出腳本"
            exit 2  
        else
            echo "輸入錯誤,退出腳本"
            exit 2  
        fi
    elif [ "$OUTTYPE" = "3" ];then
        git status
        echo "發現有修改"
        echo "選擇操作 1:執行'git add -A' 2:退出手動處理"
        read choose
        if [ $choose = "1" ];then
           git add -A
        elif [ $choose = "2" ];then
            echo "手動提交,退出腳本"
            exit 2  
        else
            echo "輸入錯誤,退出腳本"
            exit 2  
        fi
    elif [ "$OUTTYPE" = "4" ];then
        echo "發現有修改"
        echo "選擇操作 1:執行'git commit -m 備注' 2:退出"
        read choose
        if [ $choose = "1" ];then
            echo "\033[31m 輸入提交類型:          \033[0m"
            echo "\033[32m:feat(新功能feature)     \033[0m"
            echo "\033[32m:fix(修補bug)           \033[0m"
            echo "\033[32m:docs(文檔documentation) \033[0m"
            echo "\033[32m:style(格式)            \033[0m"
            echo "\033[32m:refactor(重構)         \033[0m"
            echo "\033[32m:test(增加測試)       \033[0m"
            echo "\033[32m:chore(構建過程或輔助工具的變動) \033[0m"
            read commitType
            echo "輸入您的commit文字"
            read commitStr
            git commit -m " $commitType commit:$commitStr"
            echo "已經 commit"

        elif [ $choose = "2" ];then
            echo "手動提交,退出腳本"
            exit 2  
        else
            echo "輸入錯誤,退出腳本"
            exit 2  
        fi
    elif [ "$OUTTYPE" = "5" ];then
        echo "發現沖突!!!"
        exit 2  
    fi
}

while true;
do
    checkGitStatus
done

將腳本命名 autogit.sh,放在git目錄。在ignore文件里面忽略本文件。
然后就可以用啦!

在目錄直接敲 sh autogit.sh,然后一路敲 1,回車。

如果遇到每次都要求輸入帳號密碼,可以設置長久存儲

git config --global credential.helper store
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文為 Git教程的學習筆記,教程源自廖雪峰的博客。這是一個由淺入深,學完后能立刻上手的Git教程。另,附上另一本...
    七弦桐語閱讀 6,274評論 5 47
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • + (NSString *)pathWithComponents(NSArray *)components 根據c...
    _舊時光閱讀 811評論 0 0
  • 耶和華是我的牧者,我必不至于缺乏! 耶和華要保護你,從今時直到永遠,你出你入耶和華都要保護你。 苦難是恩典,患難是...
    凌賢武閱讀 2,069評論 0 0
  • 眼珠好難畫,有空再重畫~ 變形的檸檬~ 好考驗耐心,一個下午都在畫,是兩個課時,畫到最后沒耐心了。 不過還是很開心...
    豬小賢閱讀 226評論 1 0