当前位置: 首页 > news >正文

深圳网站设计我选刻网站建设为中心

深圳网站设计我选刻,网站建设为中心,html5的广泛应用,南京手机网站开发说在前面 不知道大家平时工作的时候会不会需要经常新建git分支来开发新需求呢#xff1f;在我这边工作的时候#xff0c;需求都是以issue的形式来进行开发#xff0c;每个issue新建一个关联的分支来进行开发#xff0c;这样可以通过issue看到一个需求完整的开发记录#x…说在前面 不知道大家平时工作的时候会不会需要经常新建git分支来开发新需求呢在我这边工作的时候需求都是以issue的形式来进行开发每个issue新建一个关联的分支来进行开发这样可以通过issue看到一个需求完整的开发记录便于后续需求回顾和需求回退。而我平时本地分支都不怎么清理这就导致了我这两年来本地分支的数量达到了惊人的361个所以便开始写了这个可以批量删除分支的命令行工具。 功能设计 我们希望可以通过命令行命令的方式来进行交互快速获取本地分支列表及各分支的最后提交时间和合并状态在控制台选择我们想要删除的分支。 功能实现 1、命令行交互获取相关参数 这里我们使用jyeontu/j-inquirer模块来完成命令行交互功能jyeontu/j-inquirer模块除了支持inquirer模块的所有交互类型还扩展了文件选择器、文件夹选择器及多级选择器交互类型具体介绍可以查看文档https://www.npmjs.com/package/jyeontu/j-inquirer 1获取操作分支类型 我们的分支分为本地分支和远程分支这里我们可以选择我们需要操作的分支类型选择列表为本地分支、远程分支、本地远程。 2获取远程仓库名remote 我们可以输入自己git的远程仓库名默认为origin。 3获取生产分支名 我们需要判断各分支是否已经合并到生产分支所以需要输入自己项目的生产分支名默认为develop。 相关代码 const branchListOptions [{type: list,message: 请选择要操作的分支来源,name: branchType,choices: [本地分支, 远程分支, 本地远程],},{type: input,message: 请输入远程仓库名默认为origin,name: gitRemote,default: origin,},{type: input,message: 请输入生产分支名默认为develop,name: devBranch,default: develop,}, ]; const res await doInquirer(branchListOptions);2、命令行输出进度条 在分支过多的时候获取分支信息的时间也会较长所以我们需要在控制台中打印相关进度避免用户以为控制台卡死了如下图 3、git操作 1获取git本地分支列表 想要获取当前仓库的所有的本地分支我们可以使用git branch命令来获取 function getLocalBranchList() {const command git branch;const currentBranch getCurrentBranch();let branch child_process.execSync(command).toString().replace(trimReg, ).replace(rowReg, 、);branch branch.split(、).filter((item) item ! !item.includes(-) item ! currentBranch);return branch; }2获取远程仓库分支列表 想要获取当前仓库的所有的远程分支我们可以使用git ls-remote --heads origin命令来获取git ls-remote --heads origin 命令将显示远程仓库 origin 中所有分支的引用信息。其中每一行显示一个引用包括提交哈希值和引用的全名格式为 refs/heads/branch_name。 示例输出可能如下所示 Copy Code commit_hash refs/heads/master commit_hash refs/heads/develop commit_hash refs/heads/feature/xyz其中commit_hash 是每个分支最新提交的哈希值。 function getRemoteList(gitRemote) {const command git ls-remote --heads ${gitRemote};let branchList child_process.execSync(command).toString().replace(trimReg, ).replace(rowReg, 、);branchList branchList.split(、).filter((item) item.includes(refs/heads/)).map((branch) {return gitRemote / branch.split(refs/heads/)[1];});return branchList; }3获取各分支详细信息 我们想要在每个分支后面显示该分支最后提交时间和是否已经合并到生产分支这两个信息可以作为我们判断该分支是否要删除的一个参考。 获取分支最后提交时间 git show -s --format%ci branchName 命令用于查看 指定 分支最新提交的提交时间。其中--format%ci 用于指定输出格式为提交时间。 在 Git 中git show 命令用于显示某次提交的详细信息包括作者、提交时间、修改内容等。通过使用 -s 参数我们只显示提交摘要信息而不显示修改内容。 git show -s --format%ci develop 命令将显示 develop 分支最新提交的提交时间。输出格式为 ISO 8601 标准的时间戳例如 2023-10-22 16:41:47 0800。 function getBranchLastCommitTime(branchName) {try {const command git show -s --format%ci ${branchName};const result child_process.execSync(command).toString();const date result.split( );return date[0] date[1];} catch (err) {return 未获取到时间;} }判断分支是否合并到生产分支 git branch --contains branchName 命令用于查找包含指定分支branchName的所有分支。 在 Git 中git branch 命令用于管理分支。通过使用 --contains 参数我们可以查找包含指定提交或分支的所有分支。 git branch --contains branchName 命令将列出包含 branchName 的所有分支。输出结果将显示每个分支的名称以及指定分支是否为当前分支。 示例输出可能如下所示 Copy Codedevelop * feature/xyzbugfix/123其中* 标记表示当前所在的分支我们只需要判断输出的分支中是否存在生产分支即可 function isMergedCheck(branch) {try {const command git branch --contains ${branch};const result child_process.execSync(command).toString().replace(trimReg, ).replace(rowReg, 、);const mergedList result.split(、);return mergedList.includes(gitInfoObj.devBranch)? 已合并到${gitInfoObj.devBranch}: ;} catch (err) {return 未获取到合并状态;} }4删除选中分支 选完分支后我们就该来删除分支了删除分支的命令大家应该就比较熟悉了吧 git branch -D branchName git branch -D branchName 命令用于强制删除指定的分支branchName。该命令会删除本地仓库中的指定分支无法恢复已删除的分支。 git push remote :branchName git push remote :branchName 命令用于删除远程仓库remote中的指定分支branchName。这个命令通过推送一个空分支到远程仓库的 branchName 分支来实现删除操作。 async function doDeleteBranch(branchList) {const deleteBranchList await getDeleteBranch(branchList);if (!deleteBranchList) return;console.log(正在删除分支);progressBar.run(0);deleteBranchList.forEach((branch, index) {let command git branch -D ${branch};if (branch.includes(/)) {const tmp branch.split(/);command git push ${tmp[0]} :${tmp[1]};}child_process.execSync(command);progressBar.run(Math.floor(((index 1) / deleteBranchList.length) * 100));});console.log();console.log(已删除分支 deleteBranchList); }可以看到我们的分支瞬间就清爽了很多。 使用 该工具已经发布到 npm 上可以直接通过命令npm i -g jyeontu进行安装安装完后在控制台中输入jyeontu git即可进行操作。 源码 该工具的源码也已经开源有兴趣的同学可以到Gitee上查看Gitee地址 公众号 关注公众号『前端也能这么有趣』获取更多新鲜内容。 说在后面 这里是 JYeontu现在是一名前端工程师有空会刷刷算法题平时喜欢打羽毛球 平时也喜欢写些东西既为自己记录 也希望可以对大家有那么一丢丢的帮助写的不好望多多谅解 写错的地方望指出定会认真改进 偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章有兴趣的也可以关注下。在此谢谢大家的支持我们下文再见 。
http://www.zqtcl.cn/news/616876/

相关文章:

  • 北京比较好的网站公司在线医生免费咨询
  • 免费的个人网站怎么做企业网站管理系统软件
  • 枣庄住房和城乡建设局网站如何注册国外域名
  • 满洲里建设局网站网页设计公司的目标客户有哪些
  • 英文书 影印版 网站开发怀化组织部网站
  • 网站建设领域的基本五大策略要学会网站细节
  • dede做英文网站优化cms建站系统哪个好
  • eclipse sdk做网站邯郸技术服务类
  • 汕头网站网站建设西安网约车租车公司哪家好
  • 网站空间域名维护协议网络推广软件平台
  • 昆明网站建设公司猎狐科技怎么样wordpress主题打不开
  • 网站推广入口服饰网站建设 e-idea
  • 长沙网站建设电话2个女人做暧暧网站
  • 手机手机端网站建设电子商务网站建设步骤一般为
  • 上海金瑞建设集团网站怎样登陆网站后台
  • 定西模板型网站建设网络架构和现实架构的差异
  • 做搜索的网站做网站的代码有哪些
  • 视频制作网站推荐js做音乐网站
  • 海北wap网站建设公司有后台网站怎么做
  • 织梦网站最新漏洞入侵外贸网站模板有什么用
  • 在跨境网站贸易公司做怎么样网站建设维护合同范本
  • 网站必须做可信认证南山网站制作
  • 如何使用mysql数据库做网站企业管理专业大学排名
  • 九江网站建设九江深圳网站建设费用大概多少
  • 万网站长工具郑州seo哪家公司最强
  • 宁波哪里可以做网站企业网站源码哪个好
  • 网站每天点击量多少好精选聊城做网站的公司
  • 网站建设课程基础兰州网站seo费用
  • 天助可以搜索别人网站曲靖网站推广
  • 易语言编程可以做网站么网站备案流程