美文网首页
Git提交shell脚本

Git提交shell脚本

作者: 极客收藏夹 | 来源:发表于2018-08-18 10:09 被阅读278次

    开头

    随着项目的壮大,产品和设计小姐姐对着项目前端的效果疯狂输出。成吨的psd、效果图、图标呼啸而来。每一次页面更新或者产品改主意都是新的一堆 psd、效果图、图标呼啸而来。以至于本地存在许多类似 首页效果图_3.zip、首页效果图_8.zip。从内网下载下来后还要一顿的解压,覆盖。

    xx

    这怎么能忍!!

    所以我就想到用 GIT 去管理这堆效果图和图标。在设计的电脑配好一个Git目录,她每次有新增直接就修改,修改完就提交推送到远程(因为我们不做图,只pull不push,所以不会有冲突),我们再从远程拉下来,这样两边的文件夹就同步了。小姐姐既不需要频繁的打包、压缩、上传。我们开发也不需要频繁的下载、解压、覆盖。
    当然,要实现用GIT去管理效果图库这个美好愿景,难度还是有的。最麻烦的就是小姐姐需要能用简单的 Git 命令。

    什么?为什么不用sourceTree?

    因为我觉得命令行逼格高呀,黑框里快速闪动的光标伴随着其他同事不明觉厉的目光,小姐姐肯定喜欢。
    (实际情况并不是,后面她告诉我,她更喜欢用图形界面 ┭┮﹏┭┮)。

    然后

    虽然是简单的命令,但是对于小姐姐来说也不见得十分容易。所以我就手把手的教她们这些命令以及这些命令执行的意思:

    git status
    git add
    git commit -m 
    git push
    git log
    

    在安静了一个多月后,小姐姐突然小窗告诉我每次打这么多字母太累了,还不如 建文件夹、压缩、上传。

    WHAT

    WHAT? 就这么几行代码还闲多?你每天压缩解压,错了还要重发 浪费的时间都够写敲几遍了。
    不过说归说,小姐姐有需求我们一定要尽量满足。
    (其实是要显地自己很牛逼,能帮她实现她想要的东西,这样下次她想要的效果不好实现也好沟通)

    要实现之前的多个命令变成一个,立马就想到了脚本语言(人生苦短,我用Python)。不过小姐姐的电脑就要安装解释器,这么麻烦。
    咦,小姐姐不是有git环境吗,直接写个shell脚本给git去跑呀。
    (git之所以可以在win下跑Linux命令是因为封装了Cygwin。)

    Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行类UNIX系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如LinuxBSD,以及其他Unix系统)上的软件移植到Windows上。


    Shell脚本

    那我现在就要认真了,记下简单的shell脚本语法。

    Shell脚本(英语:Shell script),是一种电脑程序与文字档案,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行直译器的角色,在读取shell脚本之后,依序执行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,档案操作等。

    首先每个shell 脚本开头可以通过 #! 标识用哪个shell去解释后面出现的脚本内容。
    (shell 是解析shell脚本的脚本解释器程序)

    #!/bin/bash
    echo "Hello World !"
    

    保存这段代码并重命名 hello.sh。完成后修改hello.sh的文件权限,使其具有运行的权限,然后执行 ./hello.sh

    chmod +x ./hello.sh
    ./hello.sh
    
    #!/bin/bash
    # 打印操作
    function printStep(){
      echo "### 执行操作【$1】###"
    }
    
    #判断 字符串参数1是否包含字符串参数2
    function countainStr(){
      result=$(echo $1 | grep "${2}")
      if [[ "$result" != "" ]]
      then
        return 1
      else
        return 0
      fi
    }
    #ADD
    echo -e "\n"
    printStep "git add"
    echo `git add .`
    
    printStep "git status"
    echo -e "\n"
    statusResult=`git status`
    echo $statusResult
    
    # 如果没有文件修改
    countainStr $statusResult "nothing to commit"
    if [ $? == 1 ]
    then
      echo "当前文件夹没有被【新建】或【修改】"
      exit
    fi
    
    # 提交内容为空
    message="$1"
    if [ "$message" = "" ]
    then
      echo "请输入提交内容"
      read $message
    fi
    
    printStep "git commit -m ${message}"
    echo `git commit -m ${message}`
    
    printStep "git push"
    pushResult=`git push`
    
    # 如果推送远程报错
    countainStr $pushResult "fatal: "
    if [ $? == 1 ]
    then
      echo "推送远程小伙伴出错了,请联系开发小哥哥看看哪里出错了"
    else
      echo "提交完成"
    fi
    
    

    相关文章

      网友评论

          本文标题:Git提交shell脚本

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