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

省流版: npx bcy

前言

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

Step1 查看当前分支

sh 复制代码
git branch

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

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

sh 复制代码
git branch --show-current

Step2 鼠标右键复制当前分支


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

  • Shell
  • Node CLI

核心步骤

获取分支名

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

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

sh 复制代码
# bcp.sh
branch=$(git branch --show-current)
echo $branch

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

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

复制到剪贴板

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

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

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

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

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

sh 复制代码
branch=$(git branch --show-current)
echo $branch | pbcopy
# 或
git branch --show-current | pbcopy

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

sh 复制代码
git branch --show-current | tr -d '\n' | pbcopy

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

js 复制代码
execSync('git branch --show-current').toString().trim().replace(/\n/g, '');

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

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

封装实现

Shell

只需要使用alias指令即可

sh 复制代码
alias bcy='git branch --show-current | tr -d "\n" | pbcopy'

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

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

sh 复制代码
echo 'alias bcy="git branch --show-current | tr -d \"\\n\" | pbcopy"' >> ~/.zshrc

重启终端,或者使用source ~/.zshrc使其生效

sh 复制代码
source ~/.zshrc

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

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

对应的安装脚本如下

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

Node CLI

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

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

脚本也很简单

js 复制代码
#!/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 全局安装

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

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

总结

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

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

源码地址:bcy

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ew452182 小时前
ElementUI表格表头自定义添加checkbox,点击选中样式不生效
前端·javascript·elementui
suibian52352 小时前
AI时代:前端开发的职业发展路径拓宽
前端·人工智能
Moon.92 小时前
el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩
前端·vue.js·html
垚垚 Securify 前沿站2 小时前
深入了解 AppScan 工具的使用:筑牢 Web 应用安全防线
运维·前端·网络·安全·web安全·系统安全
工业甲酰苯胺5 小时前
Vue3 基础概念与环境搭建
前端·javascript·vue.js
mosquito_lover16 小时前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt
柴柴的小记9 小时前
前端vue引入特殊字体不生效
前端·javascript·vue.js
柠檬豆腐脑9 小时前
从前端到全栈:新闻管理系统及多个应用端展示
前端·全栈
bin915310 小时前
DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)
前端·javascript·vue.js·ecmascript·deepseek