[效率提升]使用shell脚本完成一些git操作

[效率提升]使用shell脚本完成一些git操作

根据分支名自动Add和Commit并Push到远程开发分支

例如开发分支名为: feature-xxx功能

Commit信息为:xxx功能

#!/bin/bash# 获取当前分支名称
current_branch=$(git rev-parse --abbrev-ref HEAD)echo "current branch: ${current_branch}"# 去掉“feature-”后剩下的内容
commit_message=${current_branch#feature-}
echo "commit message: $commit_message"# 提交代码并推送到远程仓库
git add .
git commit -m "$commit_message"
git push origin "$current_branch"

自动合并变化到develop分支里

同上,只是增加了将开发分支内容合并到develop分支的操作

# 判断当前分支
current_branch=$(git branch --show-current)# 判断目标分支是否存在
target_branch=$(git branch --list develop)echo "current branch: ${current_branch}"
echo "target branch: ${target_branch}"# 去掉“feature-”后剩下的内容
commit_message=${current_branch#feature-}
echo "commit message: $commit_message"git add .
git commit -m "$commit_message"
git push origin "$current_branch"# 判断develop分支是否存在
if [ -z "$target_branch" ]; thenecho "develop本地分支不存在"git checkout -b develop origin/develop
elsegit checkout developgit pull origin develop:develop
fi# 合并分支
git merge --no-edit "$current_branch"# 判断拉取更新后是否有冲突
conflict_num=$(git status --porcelain | grep '^UU' | wc -l)
echo "Conflict number: ${conflict_num}"
if [ "$conflict_num" -gt 0 ]; then# 把当前文件区还原到develop最新的一次commitgit reset --hard HEADecho -e "\033[41m There are conflicts, please solve them! \033[0m"
elseecho -e "\033[42mMerge successfully!\033[0m"# 输入y确认push,此时可在sourcetree等工具查看合并状况,确认后再输入y执行pushread -p "push it immediately?(y/n):" inputinput=$(echo "$input" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')if [[ $input == "y" ]]; then# push上去 最后还是自己来操作比较稳妥git push origin developecho -e "\033[42mPush OK!\033[0m"# 切换回原来的分支继续搬砖git checkout "$current_branch"elseecho -e "\033[41mCancel!\033[0m"echo -e "\033[41mStay in develop!\033[0m"exit 1fi
fi

删除无用分支

例如每次上线都会产生一个当前日期的预发分支,时间久了就会在本地堆积很多无用分支

#!/bin/bash# 列出所有符合条件的分支
git branch -r --list "origin/frontend-en-2023-*" | while read branch; doecho "$branch"
done# 确认是否删除分支
read -p "以上分支将会被删除,是否继续(Y/N)?" choice
case "$choice" iny|Y )# 删除所有符合条件的分支git branch -r --list "origin/frontend-en-2023-*" | while read branch; doecho "当前删除的本地远程分支:${branch#origin/}"# 删除本地远程分支git branch -d -r "${branch}"# 删除远程分支# git push origin --delete "${branch#origin/}"doneecho "分支已删除";;* )echo "取消删除";;
esac

查看近一个月未改动的分支

#!/bin/bash# 检测并获取近一个月都没有变动的 Git 分支列表
function get_stale_branches {# 获取一个月前的时间戳one_month_ago=$(date -d "1 month ago" +%s)# 获取所有分支列表branches=$(git for-each-ref --format='%(refname:short) %(committerdate:unix)' refs/)# 过滤出近一个月都没有变动的分支stale_branches=$(awk -v one_month_ago="$one_month_ago" '$2 < one_month_ago {print $1}' <<< "$branches")# 返回目标分支列表echo "$stale_branches"
}# 调用函数并将结果存储在变量中
stale_branches=$(get_stale_branches)# 打印目标分支列表
printf "Stale branches:\n%s\n" "$stale_branches"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python等级考试(1~6级)历届真题解析》专栏总目录

❤️ 专栏名称&#xff1a;《Python等级考试&#xff08;1~6级&#xff09;历届真题解析》 &#x1f338; 专栏介绍&#xff1a;中国电子学会《全国青少年软件编程等级考试》Python编程&#xff08;1~6级&#xff09;历届真题解析。 &#x1f680; 订阅专栏&#xff1a;订阅后可…

ThinkPHP5,使用unionAll取出两个毫无相关字段表的数据且分页

一&#xff1a;首先来了解一下 union 和 unionAll 1&#xff1a;取结果的并集&#xff0c;是否去重 union&#xff1a;对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;相当于distinct&#xff0c;同时进行默认规则的排序&#xff1b; unionAll&#xff1a;对两…

linux 数据恢复

Linux误删除及误格式化的数据恢复方案针对的文件系统&#xff1a; 1 、基于EXT2/EXT3/EXT4文件系统 &#xff1b; 2 、基于Reiserfs文件系统&#xff1b; 3 、基于Xfs文件系统。 Linux误删除及误格式化的数据恢复解决方案&#xff1a; 一、故障检测&#xff1a; 1、检测是…

Cesium 问题:二三维切换矩形区域展示不够完整

文章目录 问题分析 问题 设置影响图层覆盖范围时&#xff0c;出现三维和二维切换后展示不够完整的情况&#xff0c; Cesium.Rectangle.fromDegrees(-180, -90, 180, 90)创建的矩形区域&#xff0c;按理说是已经设置了全覆盖&#xff0c;但切换二维后并不全覆盖 例如 三维下 切换…

Redis缓存与从数据取数据性能比较

Redis缓存与从数据取数据性能比较 为什么使用Redis 使用Redis缓存数据有多个原因&#xff0c;包括提高性能、降低数据库负载、减少响应时间和支持临时数据存储等。以下是一些主要原因以及Redis缓存的工作原理和好处&#xff1a; 1. 提高性能&#xff1a; 数据库查询通常是一…

睿趣科技:抖音开一家网店大概什么时候回本

随着移动互联网的迅猛发展&#xff0c;社交媒体平台如抖音成为了商家推广产品和服务的热门渠道之一。许多人都希望能够通过在抖音上宣传自己的产品&#xff0c;甚至考虑开一家网店&#xff0c;但回本的时间是一个关键问题。本文将探讨抖音开一家网店大概什么时候回本的问题。 首…

Ubuntu系统下载及安装教程

史上最全最新Ubuntu安装教程&#xff08;图文&#xff09; - 知乎 (说明&#xff1a;本教程介绍的是安装DeskTop版的系统) 1.官网下载镜像 官方网址: https://ubuntu.com/#download进入官网后会有最新版本的镜像下载地址&#xff0c;如果需要下载最新版本&#xff0c;直接点…

Git_06_创建分支/查看分支

创建分支 # 创建分支的同时&#xff0c;切换到该分支上 > git checkout -b 分支名称 # > git push origin 分支名称查看分支 # 查看本地分支 > git branch # 查看远程分支 > git branch -r # 查看所有分支 > git branch -a删除分支 # 删除本地分支 > git …

js同级弹窗实现数据传输修改

window.postMessage 是一种用于实现跨窗口通信的 HTML5 特性。它允许在不同窗口或 iframe 之间安全地传递数据&#xff0c;即使这些窗口来自不同的域名。 window.postMessage 方法接受两个参数&#xff1a; message&#xff1a;要发送的消息&#xff0c;可以是一个字符串或一…

为何学linux及用处

目前企业使用的操作系统无非就是国产类的&#xff0c;windows和linux类。我们要提升自己的技能&#xff0c;需要学习这两款。我记得在大学时期&#xff0c;学习过windows以及linux&#xff0c;但当时觉得又不常用&#xff0c;就学的模棱两可。毕业之后&#xff0c;你会发现&…

分布式应用之监控平台zabbix的认识与搭建

一、监控系统的相关知识 1.1 监控系统运用的原因 当我们需要实时关注与其相关的各项指标是否正常&#xff0c;往往存在着很多的服务器、网络设备等硬件资源&#xff0c;如果我们想要能够更加方便的、集中的监控他们&#xff0c;zabix可以实现集中监控管理的应用程序 监控的…

在Anaconda中安装xgboost(简单高效)

文章目录 一、检查二、打开Anaconda Prompt三、安装四、验证 一、检查 前提条件&#xff1a;windows环境下&#xff0c;anaconda&#xff08;这里指的是Anaconda3&#xff09;已安装&#xff0c;相应的numpy和sicpy也已安装。如果未安装需要先安装这两个库。 二、打开Anaconda…

RapidSSL的便宜单域名https证书

RapidSSL是Geotrust https证书品牌中的一款入门级https证书品牌&#xff0c;目前属于Digicert的子品牌。它是一款提供高性价比和广泛适用范围的https证书&#xff0c;无论是个人还是企业用户都可以轻松申请并快速验证。今天就随SSL盾小编了解RapidSSL旗下的单域名https证书。 …

Redis分布式锁的实现方式、实现原理

目录 一、分布式锁的重要性与挑战1.1 分布式系统中的并发问题竞态条件数据不一致死锁 二、分布式锁的基本原理与实现方式2.1 分布式锁的基本概念2.2 基于数据库的分布式锁原理与实现方式优缺点 2.3 基于缓存的分布式锁原理与实现方式优缺点 三、Redis分布式锁的实现与使用3.1 使…

安科瑞电流隔离传感器 BA穿孔交流电流变送器-安科瑞黄安南

一.产品原理和功能介绍 BA系列产品应用电磁感应原理&#xff0c;对电网中的交流电流进行实时测量&#xff0c;采用精密恒流技术和线性温度补偿技术&#xff0c;将其隔离变换为标准的直流信号输出 采用24伏或12伏安全电压供电&#xff0c;具有过载能力强、高精度、高隔离、高安…

Talk | ICCV’23 清华赵天辰:Ada3D-基于动态推理的3D感知模型压缩及软硬件协同优化

​本期为TechBeat人工智能社区第533期线上Talk&#xff01; 北京时间9月21日(周四)20:00&#xff0c;清华大学博士生—赵天辰的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “Ada3D-基于动态推理的3D感知模型压缩及软硬件协同优化”&#xff0c;他…

JavaScript学习记录 | DOM事件流 事件冒泡-事件捕获-事件委托

目录 DOM事件流常见面试题事件冒泡与事件捕获事件冒泡使用场景事件捕获使用场景事件冒泡和事件捕获区别 事件委托 - 利用事件冒泡机制事件委托应用场景支持事件委托的事件事件委托的优缺点 DOM事件流 DOM事件流的三个阶段&#xff1a;捕获阶段 -> 目标阶段 -> 冒泡阶段 …

attrib和attrs

attrib和attrs是Python库attrs中的两个重要函数。 attrib函数用于定义类的属性&#xff0c;它接受一个或多个参数来定义属性的名称、类型和默认值等。通过使用attrib函数&#xff0c;可以简化属性的定义过程&#xff0c;使代码更加简洁和易读。 attrs函数用于定义类&#xff…

浏览器报错内容:Provisional headers are shown

浏览器报错内容&#xff1a;Provisional headers are shown 如下图&#xff1a; 解决方法&#xff1a;nginx 443 启用HTTP/2模式&#xff0c;如下图&#xff1a; server {listen 443 ssl http2;server_name callcenterda.umworks.com;client_max_body_size 200M;ssl_session_…

死锁详细解读

目录 死锁&#xff08;1&#xff09; 一、死锁的定义 二、产生死锁的原因 三、产生死锁的四个必要条件 四、解决死锁的方法 死锁&#xff08;2&#xff09; 第三节 死锁避免 一、死锁避免的概念 二、安全状态与安全序列 三、银行家算法 第四节、死锁的检测与解除 …