Git提交shell脚本

2018-08-18  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读