使用脚本工具,实现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