# git-tools **Repository Path**: xiaoyierle/git-tools ## Basic Information - **Project Name**: git-tools - **Description**: 代码管理工具 - 批量创建分支 - 批量打标签 - 批量删除分支 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-01-13 - **Last Updated**: 2023-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目管理规范-代码管理 ## 提交注释规范 特别注意:冒号后面跟一个空格 - feat:新功能(feature) - fix:修补bug - docs:文档(documentation) - style: 格式(不影响代码运行的变动) - refactor:重构(即不是新增功能,也不是修改bug的代码变动) - test:增加测试 - chore:构建过程或辅助工具的变动 ## 代码仓库、标签、分支命名规则 1. 根据固定规则构造git仓库名称:项目名称-服务名称 比如:cn01-user.git 2. 根据固定规则构造代码分支名称:项目名称-服务名称-分支名称 cn01-user-alpha 3. 根据固定规则构造标签名称:项目名称-服务名称-分支名称-版本计数器 cn01-user-alpha-001 ## 启动脚本 **优先使用如下脚本对分支、标签进行创建、删除等操作** /bin/bash batch_tag_git.sh 批量打标签 /bin/bash batch_branch_git.sh 批量创建分支 /bin/bash batch_delete_git.sh 批量删除分支 ## 必要条件 1. 本脚本运行依赖shell命令、linux环境、git命令,请提前安装好相关环境 2. git账户需要拥有所有项目的权限 3. 脚本及项目位置不可随意移动、重命名 4. 配置文件:config_base.sh ## 可配置说明 # 源代码服务器地址,暂时支持gitlab SOURCE_CODE_SERVER=192.168.1.100:9950 # 指定gitlab分组名称 GITLAB_GROUP_NAME=cn01 # 项目名称 MODULE_ID=cn01 # 当前正在使用分支版本 USE_BRANCH_VERSION=master # 指定源代码文件夹名称,空格分开 module_name_list="user asset" # 标签版本号计数器,可支持的版本号固定格式为:001-999 VERSION_COUNT=1 # 指定新分支后缀 NEW_BRANCH_VERSION=alpha --- ### 后期计划 1. 展示各模块的最后一次提交人、提交时间 ## 参考资料 - [Shell 教程](https://www.runoob.com/linux/linux-shell.html) - [在shell脚本里切换目录](https://blog.csdn.net/w6028819321/article/details/17024311) - [shell 数组遍历的3种方法](https://blog.csdn.net/Lockey23/article/details/74625744) - [Git 工具 - 凭证存储](https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8) - [shell执行linux命令](https://blog.csdn.net/zxc024000/article/details/77911770) - [shell报错:-bash: ==: 期待一元表达式](http://www.blogdaren.com/post-2189.html)) - [shell 使用数组作为函数参数的方法](https://blog.csdn.net/fdipzone/article/details/61220396) - [关于shell当中的$()和` `以及eval](https://blog.csdn.net/qq_26768741/article/details/68062328?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param) - [shell:读取文件的每一行内容并输出](https://www.cnblogs.com/iloveyoucc/archive/2012/07/10/2585529.html) - [linux shell取文本最后一行](https://github.com/linlinjava/litemall) 1. awk 'END {print} 2. sed -n '$p' 3. `sed '$!N;$!D'` 4. awk '{b=a"\n"$0;a=$0}END{print b}' - [使用awk命令获取文本的某一行,某一列](https://blog.csdn.net/aywb1314/article/details/52239281) 1. 打印文件的第一列(域) : awk '{print $1}' filename 2. 打印文件的前两列(域) : awk '{print $1,$2}' filename 3. 打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename 4. 打印文本文件的总行数 : awk 'END{print NR}' filename 5. 打印文本第一行 :awk 'NR==1{print}' filename 6. 打印文本第二行第一列 :sed -n "2, 1p" filename | awk 'print $1' - [shell echo打印换行的方法](https://blog.csdn.net/jibing57/article/details/7476167) 1. 只需要加上参数-e,比如echo "hello world.\nHello sea" - $(())表达式还有一个用途,三目运算 ```shell 如果条件为真返回1,否则返回 echo $((1<0)) 0 echo $((1>0)) 1 指定输出数字: echo $((1>0?1:2)) 1 > echo $((1<0?1:2)) 2 注意:返回值不支持字符串 ``` - [git log 时间格式化参数详解](https://www.codenong.com/cs105836289/) > git log --pretty=format:"%h - %an, %ar, %ad :%s" --date=format:"%Y-%m-%d %H:%M:%S" -1 > target_file.gitsh - [用shell将时间字符串与时间戳互转](https://blog.csdn.net/runming918/article/details/7384828) `date -d "2010-10-18 00:00:00" +%s` - [shell获取系统当前时间并格式化](https://blog.csdn.net/sinat_29100331/article/details/79091323) `time=$(date "+%Y-%m-%d %H:%M:%S")` - 报错:[Git log: "unknown date format"](https://stackoverflow.com/questions/49521074/git-log-unknown-date-format),是因为git版本不对,实测 git version 2.19.0 满足要求 - [centos下升级git版本的操作记录](https://www.cnblogs.com/kevingrace/p/8252517.html) ``` 0)安装依赖软件安装依赖软件 [root@uatjenkins01 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc [root@uatjenkins01 ~]# yum install gcc perl-ExtUtils-MakeMaker 1)卸载系统自带的底版本git(1.7.1) [root@uatjenkins01 ~]# git --version git version 1.7.1 [root@uatjenkins01 ~]# yum remove git 2)编译安装最新的git版本 [root@uatjenkins01 ~]# cd /usr/local/src/ [root@uatjenkins01 src]# wget https://www.kernel.org/pub/software/scm/git/git-2.15.1.tar.xz [root@uatjenkins01 src]# tar -vxf git-2.15.1.tar.xz [root@uatjenkins01 src]# cd git-2.15.1 [root@uatjenkins01 git-2.15.1]# make prefix=/usr/local/git all [root@uatjenkins01 git-2.15.1]# make prefix=/usr/local/git install [root@uatjenkins01 git-2.15.1]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile [root@uatjenkins01 git-2.15.1]# source /etc/profile [root@uatjenkins01 ~]# git --version git version 2.15.1 ====================================================================== 如果是非root用户使用git,则需要配置下该用户下的环境变量 [app@uatjenkins01 ~]$ echo "export PATH=$PATH:/usr/local/git/bin" >> ~/.bashrc [app@uatjenkins01 ~]$ source ~/.bashrc [app@uatjenkins01 ~]$ git --version git version 2.15.1``` ``` - [Awk 显示连续多列](https://blog.csdn.net/weixin_34138521/article/details/92461594?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control) > awk '{for(i=6;i<=7;i++) printf $i""FS;print ""}' file - [Linux:使用awk命令获取文本的某一行,某一列](https://blog.csdn.net/gorgeouschou/article/details/84679472?utm_medium=distribute.pc_relevant.none-task-blog-title-7&spm=1001.2101.3001.4242) ``` 1、打印文件的第一列(域) : awk '{print $1}' filename 2、打印文件的前两列(域) : awk '{print $1,$2} filename 3、打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename 4、打印文本文件的总行数 : awk 'END{print NR}' filename 5、打印文本第一行 :awk 'NR==1{print}' filename 6、打印文本第二行第一列 :sed -n "2, 1p" filename | awk 'print $1' ``` - [Bash休眠(sleep命令)](https://www.yiibai.com/bash/bash-sleep.html) - 睡眠9秒钟,使用:`sleep 9 或 sleep 9s` - 睡眠0.5秒钟,使用:`sleep 0.5 或 sleep 0.5s` - 睡眠2分30秒,使用:`sleep 2m 30s` - 睡眠8小时,使用:`sleep 8h` - 睡眠2天9小时5分55秒,使用:`sleep 2d 9h 5m 55s` - [grep只返回第一个匹配](https://cloud.tencent.com/developer/ask/32477) head -1 `netstat -tunlp | grep ${server_port} | head -1` - [ps 和 grep 查找消除 grep自身查找](https://blog.csdn.net/csfreebird/article/details/41210493)`示例》ps -def| grep dragonfly-framework | grep -v grep` - [shell date学习以及正确获取时间戳的姿势](https://blog.csdn.net/AQ931752921/article/details/85071221) - [shell获取系统当前时间戳](https://blog.csdn.net/c1481118216/article/details/77132270) - [MySQL 获得当前日期时间 函数](https://www.cnblogs.com/ggjucheng/p/3352280.html) - [Shell命令统计文件行数方法](https://blog.csdn.net/mahoking/article/details/93163436) - [awk字符串截取](https://blog.csdn.net/jibing57/article/details/7476167) - [linux shell脚本EOF妙用](https://blog.csdn.net/zongshi1992/article/details/71693045) - [linux cat 输出 指定列字符](https://blog.csdn.net/u010953692/article/details/103281096) - [sed、awk调用shell变量的方法](https://www.cnblogs.com/gx-303841541/archive/2012/10/25/2738029.html) - [用sed命令删除特定行](https://blog.csdn.net/TedOne_LZ/article/details/89070786) - [linux查找字符串所在行,输出行号](https://blog.csdn.net/Olivia_Vang/article/details/104076272) - [shell脚本中的字符串处理(长度,读取,替换,截取,分割)_尤达c的博客-CSDN博客_shell分割字符串读取](https://blog.csdn.net/m0_51971452/article/details/115263995)