git status和git push扩展脚本

news2024/11/16 23:41:07

git status和git push扩展脚本

1、对git status扩展使用方法

我们先来看看效果:

在这里插入图片描述

在之前的时候,我是用git status 查看工作区的变化,我想看某个文件的变化必须使用git diff file_abs_path,必须要输入文件的相对目录。每次都输入我觉得很是费劲。

所以我想了个办法,写个脚本git_st其实是我对shell脚本起了别名,我把放在.bashrc中,alias git_st=source git_status.sh

如果你clone了platypus项目直接执行install脚本就可以了,在source ~/.bashrc,使配置文件生效。

使用方法:

$ git_st
$ git diff $dolphin_cpp

原理:

就是先遍历所有已经修改过的文件,向bash 中写入环境变量。变量名就是文件+后缀名,值就是文件的绝对路径。在使用git diff的时候,再引用写入的环境变量,比如:$dolphin_cpp,这样就可以了。

再仔细看下脚本:

#!/bin/bash

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}"
}

var_list=()

function update_var {
        suffix=1
        newstr=$1
        # 解决文件可能重名,如果重名则添加后缀方式解决
        while [[ "${var_list[*]}" =~ $newstr ]]
        do
          newstr="$newstr""_""$suffix"
          suffix=$(($suffix+1))
        done

        var_list+=("$newstr")
        export "$newstr=$2"
        echo_red "$newstr=$2"
}

top_dir_path=`git rev-parse --show-toplevel`
# 获取 git status 输出的有变化的文件名,并保存到数组 files 中
files=( $(git status --porcelain | tee /dev/tty | awk '{print $2}') )

echo ""

if [ ${#files[@]} -eq 0 ]; then
    echo_green "Not find any modified file"
else
        echo_green "setting envirnoment variable start: "
        # 遍历文件列表,设置环境变量
        for file in "${files[@]}"
        do
                origin_file_name="$(basename "$file")"
                file_name="$(basename "$file")"
                if [[ $file_name == .* ]]; then
                        IFS='.'
                        arr=($file_name)
                        unset IFS
                        # 遍历数组中的每个元素
                        file_name="${arr[1]}"
                else
                        # 提取出文件名(不含后缀)
                        file_name="${file_name%%.*}"
                fi
                # 设置环境变量
                if [[ $origin_file_name = *.* ]]; then
                        file_name="$file_name""_""${origin_file_name##*.}"
                fi
                update_var "$file_name" "$top_dir_path/$file"
        done
        echo_green "setting envirnoment variable end: "
fi

unset RED
unset RES
unset GREEN
unset GREENEND

2、git push扩展

我在使用过程中发现,我的仓库可能有多个远程服务器,每次git push gitee && git push github && git push home,很是费劲。

所以写了个脚本直接在bash输入一个命令:git_push

看下效果:
在这里插入图片描述

在使用这个命令之前,你要确定你的本地分支已经和远程分支关联了。

这个push.sh脚本寥寥数行,但是省事多了。

remote_names=`git remote`

# 遍历所有Git远程仓库的名称并打印它们
for name in ${remote_names}
do
  git push $name
done

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

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

相关文章

计及N-k安全约束的含光热电站电力系统优化调度模型【IEEE14节点、118节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

别再无脑背八股文了

大家好,我是帅地。 记得两年前我参加校招的时候,还没怎么听过八股文这个词,这两年,到处是八股文,可见校招是越来越激烈了。 有些人可能还不知道八股文是啥,八股文其实就是指面试中那些经常被问到的基础知…

前端009_类别模块_修改功能

第九章 1、需求分析2、Mock添加查询数据3、Mock修改数据4、Api调用回显数据5、提交修改后的数据6、效果1、需求分析 需求分析 当点击 编辑 按钮后,弹出编辑窗口,并查询出分类相关信息进行渲染。修改后点击 确定 提交修改后的数据。 2、Mock添加查询数据 请求URL: /article/…

面试篇:多线程

一、线程和进程的区别? 1、进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理I…

PySpark基础入门(8):Spark SQL(内容补充)

目录 SparkSQL Shuffle 分区数目 SparkSQL 数据清洗API dropDuplicates dropna fillna SparkSQL函数定义(UDF函数) SparkSQL 使用窗口函数 SparkSQL运行流程 SparkSQL的自动优化 Catalyst优化器 SparkSQL Shuffle 分区数目 在SparkSQL中&…

无魔法插件 - ChatGPT Sidebar with GPT-4

文章目录 1.介绍2.功能一览2.1 唤醒方式2.2 聊天功能2.3 快捷模板2.4 单独聊天界面2.5 ChatPDF2.6 任意位置快捷使用模板2.7 手机 APP 3.GPT-3.0 还是 GPT-3.5?4.免费 or 收费?5.安装 Sidebar 创作不易,如果本文对你有帮助,胖友记…

SpringCloud(22):Sentinel对Feign的支持

Sentinel 适配了 Feign组件。如果想使用,除了引入 spring-cloud-starter-alibaba-sentinel 的依赖外还需要 2个步骤: 配置文件打开 Sentinel 对 Feign 的支持:feign.sentinel.enabledtrue加入 spring-cloud-starter-openfeign 依赖使 Sentin…

springboot 整合redis

第一步&#xff1a;pom.xml文件导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.5.4</version> </dependency 第二步&#xff1a;appli…

【iOS】—— NSProxy类

NSProxy 文章目录 NSProxyNSProxy简介NSProxy模拟多继承NSProxy 避免NSTimer循环引用 在学消息转发的时候看到过这个类&#xff0c;本来没打算细看&#xff0c;后来看学长博客循环引用的时候也看到了这个类&#xff0c;就来细看看。 NSProxy简介 NSProxy 是一个实现了 NSObjec…

在线病毒分析工具评测试用

总览 1 区分在线杀毒引擎与在线沙盒 在线杀毒引擎用的大多是国际上出名的杀毒厂商的引擎作为底层&#xff0c;对文件进行扫描&#xff0c;结论通常会反馈“无毒”或者杀毒引擎自己的代码。 在线沙盒用云端的机器跑一次程序&#xff0c;然后收集程序的相关信息。 两者各有与…

情感分析讲解

情感分析简述 情感分析(Sentiment Analysis)又称倾向性分析&#xff0c;或意见挖掘&#xff0c;它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。利用情感分析能力&#xff0c;可以针对带有主观描述的自然语言文本&#xff0c;自动判断该文本的情感正负倾向…

MongoDB 聚合操作Map-Reduce

这此之前已经对MongoDB中的一些聚合操作进行了详细的介绍&#xff0c;主要介绍了聚合方法和聚合管道&#xff1b;如果您想对聚合方法和聚合管道进行了解&#xff0c;可以参考&#xff1a; MongoDB 数据库操作汇总https://blog.csdn.net/m1729339749/article/details/130086022…

ClickHouse为何能超越Elasticsearch?

背景 Elasticsearch是一个强大的分布式全文检索和数据分析引擎&#xff0c;也是日志分析系统经常使用的一种实现方案&#xff0c;但近年来随着ClickHouse的发展&#xff0c;Elasticsearch在日志分析领域的地位逐渐被取代&#xff0c;许多公司已经将自己的日志分析解决方案从ES…

games101作业1

作业1的大致要求就是让我们实现如下两个函数&#xff0c;一个是返回在三维空间中绕着Z轴旋转的矩阵&#xff0c;另一个是返回投影矩阵。正确完成这两个函数之后&#xff0c;运行代码你就会在窗口中看到一个三角形&#xff0c;并且按a键和d键会发生旋转。 首先来实现get_model_m…

RuleApp1.4.0 文章社区客户端

简介&#xff1a; 可以打包成安卓&#xff0c;苹果&#xff0c;h5&#xff0c;小程序&#xff0c;全新的版本增加了私聊和群聊&#xff0c;动态模块等&#xff0c;还有自动和手动封禁机制。[滑稽][滑稽]主要模块&#xff1a;用户模块&#xff0c;文章模块&#xff0c;动态模块…

国产服务器tomcat开机自启

目录结构 前言方法一方法二方法三参考连接 前言 国产服务器配置tomcat开机自启动&#xff1b;目前测试两种服务器 银河麒麟&#xff08;Linux localhost.localdomain 4.19.90-52.22.v2207.ky10.x86_64 #1 SMP Tue Mar 14 12:19:10 CST 2023 x86_64 x86_64 x86_64 GNU/Linux&am…

多模态速读:ViLT、ALBEF、VLMO、BLIP

ViLT : Vision-and-Language Transformer Without Convolution or Region Supervision ViLT : Vision-and-Language Transformer Without Convolution or Region SupervisionIntroductionApproach参考 ALBEF: Vision and LanguageRepresentation Learning with Momentum Distil…

如何在香港服务器上进行网站迁移?五个主要步骤

​  服务器迁移是将大量关键信息从一台服务器移动到另一台服务器的过程&#xff0c;同时确保新服务器已正确配置以承载这些新信息。对于业务涉及中国大陆、香港及亚太区地区往来的用户&#xff0c;您可能需要将网站迁移到香港服务器上&#xff0c;来更好地发展业务。香港服务…

【c语言】字符串常用函数组件化封装 | 字符串总结

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

【JavaScript】9.事件

事件 1. 注册事件&#xff08;绑定事件&#xff09; 给元素添加事件&#xff0c;称为注册事件或者绑定事件 1.1 注册事件两种方式 传统注册方式&#xff08;onclick&#xff09; 传统方式注册事件特点&#xff1a; 注册事件的唯一性同一个元素同一个事件只能设置一个处理函数…