前言
使用 Git
工具,提交代码的时候每次都需要手敲 add
、 commit
、pull
、push
和 merge
等命令,使用图形界面的还需要手动点击对应按钮才行。所以咱习惯配置一些脚本来执行提交、拉取等命令来快速操作。本文咱以脚本文件(以 .sh
结尾)来处理。当然,这种方式也是在刚出来工作的时候,在大佬手里学习到的~~
一、什么是.sh 文件?
- 被称为脚本Bash的应用程序和使用开发人员文件。
二、使用方式
首先脚本配置需要知道当前需要提交、拉取、推送的具体分支,以下有三种方式可获取当前分支名称
git branch | grep "*"
git symbolic-ref --short -q HEAD
git rev-parse --abbrev-ref HEAD
可能在vscode内终端会提示错误,选择对应可执行的方式即可
具体配置如下
咱一般习惯在项目更目录新建 sh
文件,然后分别新建 add.sh
、 build.sh
、 pull.sh
、 merge.sh
和 rebase.sh
文件,具体内容如下:
提交脚本
add.sh
– 提交代码时执行的脚本文件
#!/usr/bin/env bash
echo "请输入提交的原因:"
read REASON
if [ "$REASON"x = ""x ]; then
echo "请输入提交原因:"
exit 0
fi
cd ../
branchName=`git rev-parse --abbrev-ref HEAD`
git add .
git commit -m "${REASON}"
git pull origin $branchName
git push origin $branchName
使用方式很简单
首先使用终端进入sh
目录,执行 sh add.sh
命令。一般咱习惯 输入 sh a
再按下 Tab 键找到对应的 add.sh
然后会输出需要提交的原因,按照实际提交内容备注说明即可,输入完之后按下Enter键即可
可以看出命令会先提示需要提交的原因,即代码提交备注。且自动获取当前git分支,然后提交和推送。
构建脚本
build.sh
– 构建命名,根据实际的package.json
配置输出提示即可,一般有sit
测试环境、uat
业务验收环境和prod
生存
#!/usr/bin/env bash
echo "请输入构建环境sit/uat/prod:"
read ENV
if [ "$ENV"x = ""x ]; then
echo "请输入构建环境sit/uat/prod:"
exit 0
fi
cd ../
npm run "${ENV}"
执行 sh build.sh
, 然后输入对应需要构建的环境即可
拉取脚本
pull.sh
拉取最新代码
#!/usr/bin/env bash
cd ../
branchName=`git rev-parse --abbrev-ref HEAD`
git pull origin $branchName
执行 sh pull.sh
即可
合并脚本
merge.sh
这个脚本是合并分支的时候使用,具体是先确认当前分支然后再确认需要被合并的分支
#!/usr/bin/env bash
cd ../
git branch
echo "请输入被合并的分支名称:"
read BRANCH
if [ "$BRANCH"x = ""x ]; then
echo '请输入被合并的分支名称:'
exit 0
fi
branchName=`git rev-parse --abbrev-ref HEAD`
if [ "$BRANCH"x != ""x ]; then
echo "请确认当前分支是{${branchName}}分支,并确认当前分支需合并的分支名称为{${BRANCH}} ---- 并确认在输入yes Or no?";
read BOOL
case "$BOOL" in
"yes") echo "确认合并";
git merge ${BRANCH};
echo "合并成功";
;;
"no") echo "取消合并";
;;
esac
exit 0
fi
变基提交脚本
rebase.sh
这个脚本需要使用了自个分支的时候使用,一般是比较少使用的,也是用于记录当前开发者代码量等比较好的一种方式,这里不多介绍哈,有兴趣的可自行查阅相关资料了解
#!/usr/bin/env bash
branchName=`git rev-parse --abbrev-ref HEAD`
cd ../
git fetch upstream
git rebase upstream/$branchName
执行 sh rebase.sh
即可
三、总结
个人感觉使用了上述脚本配置后,可以快速操作git相关操作,且无需记住分支名称(有些项目组新建的分支名很难记,当前这种命令就很好解决分支搞错的情况)