美文网首页
git 提交偷懒方法

git 提交偷懒方法

作者: 学无止境吧 | 来源:发表于2017-07-04 13:49 被阅读106次

我从来就是个懒人。

使用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提交的时候,敲一堆命令,繁琐得很。首先可以定义别名缩短键入的指令 btw,这样还是没...

  • android studio提交代码报错:HTTP 401 cu

    git命令行可以提交,但studio提交就报错 解决方法:project -> .git 文件 -> config...

  • 工作常用的git指令

    GIT常用命令 远程仓库 分支 tag 提交代码 子模块 导出 偷懒配置

  • Git Tag使用

    tag a、发布tag方法 1、git add →git commit →git push 提交代码 2、git...

  • git error Missing tree

    git 提交有时会出现这个提示,导致提交失败,解决方法是: 改为用这种方式提交:git push --no-thi...

  • git

    git 提交文件超出限制 方法: 一、git log 找到提交大文件之前的commit例:commit 88798...

  • 日常用的git提交代码的方法

    日常用的git提交代码的方法 一、初始化本地仓库,提交代码,提交到远程git仓库 1、初始化代码仓库 git in...

  • git清空所有记录

    git 清空所有commit记录方法 说明:例如将代码提交到git仓库,将一些敏感信息提交,所以需要删除提交记录以...

  • git 提交代码

    第一种方法:(本地代码没有更改) 第二种方法:(本地代码已经修改) git 提交 本地代码到主分支 git 提交 ...

  • 【git】git如何找回本地被覆盖的代码

    1、方法1 git reflog 查看提交记录,找到对应的commitId git reset --hard 版...

网友评论

      本文标题:git 提交偷懒方法

      本文链接:https://www.haomeiwen.com/subject/wazthxtx.html