一个脚本工具,实现git自动拉分支、提交代码一键完成

954 阅读1分钟

使用脚本工具,实现git自动拉分支、提交代码一键完成,使用时请将git.sh文件放在当前项目的根目录,首次执行./git.sh 需先赋予权限:chmod +x git.sh

可执行命令:

./git.sh

./git.sh "提交内容"

./git.sh "提交内容" 单文件路径

./git.sh -vm

a. 此提交限制在dev分支中,执行此操作用于生成本次需合进master的进版内容文件并自动拉分支提交到远程。

b. versions.txt记录每个版本的发版提交内容列表。

5.master分支禁止直接提交内容

6.如果直接在dev分支开发,执行./git.sh时会【自动新建分支】并提交到远程同名分支,自动生成的分支名格式:name-日期-时间

7.如果已有分支上开发,执行./git.sh用于提交到远程

git.sh文件内容如下:

#!/bin/bash

# use: sh ./git.sh "commit内容" || ./git.sh "添加自动提交的使用方式 如果不能执行,先chmod +x  git.sh"
hasGit=`which git`
msg=${1:-'auto commit'}
file=${2}


if [ ! $hasGit ];then
  echo 'git init or git clone url';
  exit 1;
else
  branch=`git branch | grep "*" | tr -d \*`
  if [ $branch == master ];then
    exit 1;
  elif [ $branch == dev ];then
    # ./git.sh -vm 替换版本号并生成版本内容文件,上传至Dev发起merge到master
    if [ "$msg" = "-vm" ];then
      # echo -n "请输入本次进版需求版本号:"
      curBr=`git symbolic-ref --short -q HEAD`
      # line=`grep -n 'version' project.config.json`
      # version=`sed -n '4p' project.config.json | awk '{print $2}' | tr -d \"\,`
      version=`grep -n 'version' utils/config.js | awk '{print $3}' | tr -d \"\,`
      time=$(date "+%Y-%m-%d %H:%M:%S")
      git pull origin master
      echo "本次进版需求版本号:$version" >> versions.txt
      echo "本次进版日期:$time" >> versions.txt
      echo "本次进版需求内容如下:\n`git log --format='%s' master...${curBr}`" >> versions.txt
      echo '\n\n\n' >> versions.txt
      git add . && git commit -m "$msg" && git push origin ${branch:2}
      exit 1;
    fi
    username=`git config user.name`
    random=`openssl rand -base64 5`
    time=$(date "+%Y%m%d-%H%M%S")
    git checkout -b "${username-guest}-${time-$random}"
    git push --set-upstream origin "${username-guest}-${time-$random}"
  fi
  newbranch=`git branch | grep "*" | tr -d \*`
  if [ ! $file ];then
    git add . && git commit -m "$msg" && git push origin ${newbranch}
    exit 1;
  else
    git add ${file} && git commit -m "$msg" && git push origin ${newbranch}
    exit 1;
  fi
fi