利用chatGPT,半小时搞定git自动拉取代码
果然是工具利用的好,极大的提高了生产力啊。
对我shell这种都没有写过100行代码的人来说,真的是提高了工作效率。按照以往的经验,我一边google,一边写代码,至少也要半天时间。
先来预览下结果:
上面的执行环境,就是我之前的文章写过的开源软件。
脚本update_code.sh仓库在:https://github.com/MingYueRuYa/worktools https://gitee.com/liushixiong/worktools
脚本实现以下几个功能:
- 自动fetch代码
- 自动rebase
- 自动stash和stash pop
- 自动更新子模块
#!/bin/sh
RED='\e[1;31m' # 红
RES='\e[0m'
GREEN='\033[32m' # 绿色
GREEN_END='\033[0m'
function echo_red {
echo -e "${RED}************$1************${RES}"
}
function echo_green {
echo -e "${GREEN}************$1************${GREEN_END}"
}
stashed=0
# ./update.sh -h 显示用法
while getopts ":h" opt; do
case $opt in
h)
echo "usage:./update_code.sh remote_svr branch_name"
exit 0
;;
esac
done
if [ $# -eq 0 ]; then
echo_green "No parameters provided, use default parameters"
remote_svr="origin"
remote_branch="master"
else
if [ $# -eq 1 ]; then
remote_svr=$1
remote_branch="master"
elif [ $# -eq 2 ]; then
remote_svr=$1
remote_branch=$2
fi
fi
echo_green "remote server:"$remote_svr
echo_green "remote branch name:"$remote_branch
echo ""
# 获取git remote出来的远程服务器名称,并将多个名称放入数组中
# remote_names=($(git remote))
# 输出数组中的所有元素
# for name in "${remote_names[@]}"
# do
# echo "The remote server name is: $name"
# done
# 查看是否有文件,子模块修改
echo_red "git status start"
status=$(git status --porcelain -uno)
if [ -n "$status" ]; then
echo_red "modified files"
echo "$status"
echo_red "modified files"
echo ""
echo_red "git stash start"
git stash
echo_red "git stash end"
echo ""
stashed=1
# 如果有3rd,hc字段,表示有子模块更新
# 第三方子仓库的目录组织方式,必须如下: .../3rd/ .../hc/
if echo "$status" | grep -qE "idl|hc"; then
echo_red "update submodule starts"
git submodule update --init --recursive
echo_red "update submodule end"
git stash
fi
else
echo_green "Not find any modified."
fi
echo_red "git status end"
echo ""
# 远程服务器的名称,可能存在多个,
# 所以约定成俗,上游的服务器统称为up(upstream)
echo_red "git fetch $remote_svr start"
git fetch $remote_svr
echo_red "git fetch $remote_svr end"
echo ""
# 远程服务器的分支格式必须是统一的。
# 如:up/release/branch_name,从本地的分支获取名字,组成远程分支名称
echo_red "git rebase start"
# 这种方式要求本地分支和远程名称一致,且满足特定的格式。
# 条件苛刻,故不再采用,而是采用将分支名通过参数传递
# branch_name=$(git rev-parse --abbrev-ref HEAD)
# version=$(basename "$branch_name")
git rebase "$remote_svr/$remote_branch"
echo_red "git rebase end"
echo ""
if [ $stashed -eq 1 ]; then
echo_red "git stash pop start"
git stash pop
echo_red "git stash pop end"
fi
发现chatGPT真的是很强大。文章来源:https://www.toymoban.com/news/detail-407609.html
对于大型项目来说,有了自动拉取代码。每天自己定时拉个代码,自动编译。早上过来就直接开工,不用再等个十几分钟。还是极大的方便。文章来源地址https://www.toymoban.com/news/detail-407609.html
到了这里,关于利用chatGPT,半小时搞定git自动拉取代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!