如何优雅的复制当前项目分支名

简介: 前言在工作中,协作场景下,避免不了要告诉同事你当前的开发分支,通常情况下需要2步Step1 查看当前分支

前言

在工作中,协作场景下,避免不了要告诉同事你当前的开发分支,通常情况下需要2步

Step1 查看当前分支

git branch

这里还有个case,分支多的话需要翻页查看,才能找到当前分支

image.png

要准确获取需要加上--show-current参数

git branch --show-current

image.png

Step2 鼠标右键复制当前分支

本文将会介绍2种方式,实现1行代码直接复制分支

  • Shell
  • Node CLI

核心步骤

获取分支名

这个上面介绍了,可以通过git branch --show-current获取

shell 里,可以直接将结果存到变量里

# bcp.sh
branch=$(git branch --show-current)
echo $branch

image.png

Node.js 里,可以通过child_process模块来执行命令

const { execSync } = require('child_process');
const branch = execSync('git branch --show-current').toString().trim();
console.log(branch);

 image.png

复制到剪贴板

这一块就是调用系统指令执行了,不同操作系统的不一样

之前用过 node-copy-paste 这个库

大概介绍了一下各个操作系统所用的指令:MacOS(pbcopy)、Windows(clip)、Linux(xclip)

image.png

这里笔者用的是MacOS,所以直接用pbcopy指令

只需要在上面的基础上加上| pbcopy即可

branch=$(git branch --show-current)
echo $branch | pbcopy
# 或
git branch --show-current | pbcopy

运行后发现git branch --show-current获取的内容会有换行符,可以通过tr指令去掉

git branch --show-current | tr -d '\n' | pbcopy

 Node.js 里,在.trim()后加上.replace(/\n/g, '')即可

execSync('git branch --show-current').toString().trim().replace(/\n/g, '');

不过实际情况下,我们需要将这么长的指令封装起来,方便使用

谁没事敲这么多,都可以手动CV好多遍了

封装实现

Shell

只需要使用alias指令即可

alias bcy='git branch --show-current | tr -d "\n" | pbcopy'

然后将这个指令加入到~/.zshrc~/.bashrc里即可(可以使用 echo $0确定自己的终端默认的shell执行器)

可运行下面的shell脚本完成自动添加

echo 'alias bcy="git branch --show-current | tr -d \"\\n\" | pbcopy"' >> ~/.zshrc
source ~/.zshrc

image.png

当然我们也可以打印一些提示信息

alias bcy='branch=$(git branch --show-current); echo "当前分支:$branch"; echo $branch | tr -d "\n" | pbcopy'

对应的安装脚本如下

echo "alias bcy='branch=\$(git branch --show-current); echo \"当前分支:\$branch\"; echo \$branch | tr -d \"\\\\n\" | pbcopy'" >> ~/.zshrc


image.png

Node CLI

上面介绍的是shell里的实现,这里介绍下Node.js里的实现

方便有 Node 环境,但不熟悉Shell的同学使用

脚本也很简单

#!/usr/bin/env node
const { execSync } = require('child_process')
const ncp = require('copy-paste')
// 获取当前仓库分支
const branch = execSync('git branch --show-current')
  .toString()
  .trim()
  .replace(/\n/g, '')
console.log('当前分支:', branch)
ncp.copy(branch)

这个CLI通过npm包发布了,可以直接npx bcy使用

或者 npm i bcy -g 全局安装

 image.png

包名实在是难取,简单语义化一点的都被占用了,让GPT 辅助了一下

 image.png

最后用了搜了一圈不重复的只有bcy

总结

本文简单介绍了如何通过ShellNode.js实现复制当前分支名到剪贴板

如果你有更好的实现方式,欢迎留言讨论

相关文章
|
Web App开发
在 HTML 中禁用 Chrome 浏览器的 Google 翻译功能
在 html 标签中添加 translate=“no” 属性,浏览器将不会翻译整个页面。
1104 0
|
API 调度
【FreeRTOS】互斥锁的使用
【FreeRTOS】互斥锁的使用
435 0
|
前端开发 JavaScript API
vue3-ts-storybook:理解storybook、实践 / 前端组件库
vue3-ts-storybook:理解storybook、实践 / 前端组件库
945 0
|
1月前
|
存储 人工智能 弹性计算
阿里云服务器学生免费领取指南:2026年最新0元获得一台学生机教程
阿里云学生可免费领300元无门槛代金券,认证后用于购云服务器即0元入手!教程涵盖申请、认证及使用全流程。非学生亦享权益中心特惠机型,低至38元/年。详情见阿里云高校用云计划。
1593 18
|
JavaScript C++
以 Vue 3 项目为例,你是否经常遇到 import 语句顺序混乱的问题?要想解决它其实很容易!
以 Vue 3 项目为例,你是否经常遇到 import 语句顺序混乱的问题?要想解决它其实很容易!
|
6月前
|
JSON 监控 测试技术
亚马逊:调用订单退款API自动化处理售后请求,缩短用户等待时间
在电商运营中,售后效率直接影响用户体验与平台声誉。亚马逊订单退款API为卖家提供自动化工具,通过编程方式高效处理退款请求,显著缩短用户等待时间。本文详解如何集成该API,实现退款流程自动化,提升响应速度与用户满意度。
245 0
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。
|
开发工具 git
Git在远程仓库创建分支并使用IDEA同步分支
Git在远程仓库创建分支并使用IDEA同步分支
875 0
|
存储 前端开发 JavaScript
JavaScript 并发任务控制
【8月更文挑战第31天】JavaScript 并发任务控制
396 2
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
28576 0

热门文章

最新文章