Project Icon

scm_breeze

Shell脚本集合增强Git交互体验提升开发效率

SCM Breeze是一套Shell脚本集合,旨在增强Git交互体验。适用于bash和zsh环境,它提供文件快捷方式、仓库索引和tab自动补全等功能。开发者可使用数字快捷键操作Git文件,快速切换项目,并批量管理多个仓库。SCM Breeze支持自定义配置,可与现有Git别名集成,有效简化源代码管理工作流程。该工具通过提高日常Git操作的效率,帮助开发者更专注于代码开发。

SCM Breeze TravisCI

简化您的SCM工作流程。

SCM Breeze是一套shell脚本(适用于bashzsh),可以增强您与git的交互。它与您的shell集成,为您提供编号文件快捷方式、带有标签补全的存储库索引以及许多其他有用的功能。

安装

git clone https://github.com/scmbreeze/scm_breeze.git ~/.scm_breeze
~/.scm_breeze/install.sh
source ~/.bashrc   # 或 source "${ZDOTDIR:-$HOME}/.zshrc"

安装脚本会创建所需的默认配置,并将以下行添加到您的.bashrc.zshrc中:

[ -s "$HOME/.scm_breeze/scm_breeze.sh" ] && source "$HOME/.scm_breeze/scm_breeze.sh"

注意: 您需要安装ruby才能使某些SCM Breeze命令正常工作。这还可以提高性能。有关安装信息,请参阅ruby-lang.org

文件快捷方式

SCM Breeze使处理已更改的文件和文件组变得非常容易。每当您查看SCM状态时,每个修改的路径都会存储在一个编号的环境变量中。您可以配置变量前缀,默认为'e'。

Git状态快捷方式:

带快捷方式的Git状态

'ls'快捷方式:

带快捷方式的Ls

这些数字(或数字范围)可以与任何SCM或系统命令一起使用。

例如,如果ga是您的git add别名,您不必输入像这样的内容:

$ ga assets/git_breeze/config* assets/git_breeze/install.sh

您可以改为输入:

$ ga $e2 $e3 $e11

但SCM Breeze将ga别名为git_add_shortcuts函数,该函数足够智能可以展开整数和范围,所以您只需输入:

$ ga 2 3 11

如果您想添加所有未暂存的更改(文件1到10):

$ ga 1-10

(请注意,ga还会删除已删除的文件,这与标准的git add命令不同。如果您不喜欢这种行为,可以将其关闭。)

您还可以通过输入以下内容来diff、reset或checkout文件:

$ gd 3
$ grs 4
$ gco 5

您可以通过将命令传递给exec_scmb_expand_args(默认别名为ge)来将这些快捷方式与系统命令一起使用:

$ echo $e4
# => assets/git_breeze/git_breeze.sh
$ ge echo 4
# => assets/git_breeze/git_breeze.sh
$ ge echo 1-3
# 展开为 echo $e1 $e2 $e3
# => _shared.sh assets/git_breeze/config.example.sh assets/git_breeze/config.sh

其他快捷方式

SCM Breeze为您的shell添加了许多别名。使用list_aliases查看所有别名及其对应的命令。您可以通过添加搜索字符串来过滤别名:list_aliases git log

还有一个git_aliases命令,它只显示git命令的别名。您也可以传入额外的过滤器,例如git_aliases log

键盘绑定

我最常用的git命令是git addgit commit,所以我希望这些命令尽可能简化。加速常用命令的一种方法是将它们绑定到键盘快捷键。

以下是默认的键绑定:

  • CTRL+x c => git_add_and_commit - 添加给定文件(如果有),然后提交暂存的更改
  • CTRL+x SPACE => git_commit_all - 提交所有内容

提交快捷方式使用git_commit_prompt函数,它提供了一个简单的提示,如下所示:

Git提交所有

(使用bash时,此提交提示让您可以通过箭头键访问bash历史记录。)

如果您真的想加快工作流程,可以输入以下内容:

$ 2 3 <CTRL+x c>

这会发送HOME键,然后是git_add_and_commit:

Git添加和提交

存储库索引

第二个功能是所有项目和子模块的存储库索引。这可以让您在项目目录之间快速切换,并带有标签补全功能,甚至可以补全到项目子目录。这意味着您可以将项目组织在子文件夹中,但切换它们就像它们都在一个文件夹中一样容易。

它类似于autojump,但它不需要"学习"任何东西,而且它可以做一些特定于SCM的事情,比如:

  • 为所有存储库运行命令(如果您需要更新大量远程URL,这很有用)
  • 通过cron任务更新所有存储库

git_index的默认别名是'c',可能代表'code'

首先,您需要通过在~/.git.scmbrc中设置GIT_REPO_DIR来配置存储库目录。

然后,构建索引:

$ c --rebuild
# => == 扫描 /home/ndbroadbent/code 中的git存储库和子模块...
# => ===== 在 /home/ndbroadbent/code/.git_index 中已索引 64 个存储库

然后您将能够在项目之间切换,或显示已索引存储库的列表。

要切换到项目目录,您不需要输入完整的项目名称。例如,要切换到capistrano项目,您可以输入以下任何一项:

$ c capistrano
$ c cap
$ c istra

或者如果您想直接进入capistrano中的子目录:

$ c cap<TAB>
$ c capistrano/<TAB>
# => bin/   lib/   test/
$ c capistrano/l<TAB>
$ c capistrano/lib/
# => cd ~/code/gems/capistrano/lib

或者如果您想进入~/code目录中的子目录,在第一个参数前加上/:

~ $ c /gems
~/code/gems $

链接外部项目设计目录

当您为使用git的项目创建logo或图标时,您是否曾想过应该将那些.psd.xcf文件存储在哪里?您是提交所有原始设计文件,还是因为这些文件的任何更改都会使存储库变得臃肿而让您感到不安? 以下是我设定的目标:

  • 我想要为每个项目创建一个设计目录
  • 我不希望设计目录被提交到git仓库中
  • 设计目录需要在我所有的机器上同步

对我来说,通过Dropbox账户同步文件是最简单的方法。 但是,如果你在一个更大的团队中工作,你可以在你的一台服务器上设置一个共享的设计目录,并使用rsync进行同步。

1) 创建和配置根设计目录

我在~/Dropbox/Design创建了我的根设计目录。

创建根设计目录后,编辑~/.scmbrc并将root_design_dir设置为你刚刚创建的目录。你还可以配置在每个项目中创建的设计目录(默认:design_assets),以及你想使用的子目录。默认的基本子目录是:Images、Backgrounds、Logos、Icons、Mockups和Screenshots。

更改这些设置后,记得运行source ~/.bashrcsource "${ZDOTDIR:-$HOME}/.zshrc"

2) 为你的项目初始化设计目录

要设置设计目录和符号链接,进入项目目录并运行:

design init

如果你的根目录是~/Dropbox/Design,将会在~/Dropbox/Design/projects/my_project/Backgrounds~/Dropbox/Design/projects/my_project/Icons等位置创建目录。

然后它会将项目从你的根设计目录符号链接到你项目的设计目录,最终得到:

  • my_project/design_assets -> ~/Dropbox/Design/projects/my_project

它还会将此目录添加到.git/info/exclude中,以便git忽略它。

如果你使用git仓库索引,你可以运行以下批处理命令,一次性为所有git仓库设置这些目录:

git_index --batch-cmd design init

如果你想删除任何空的设计目录,运行:

design trim

如果你想删除项目的所有设计目录,即使它们包含文件:

design rm

3) 将现有设计目录链接到你的项目中

如果你已经在一台机器上设置了设计目录,你会希望它们在所有其他开发机器上同步。

在配置好根设计目录后,只需在其他机器上运行以下命令:

design link

这会使用你的git索引来确定在哪里创建符号链接。如果你不使用git索引,可以通过为每个项目运行'design init'来达到相同的效果。

配置

SCM Breeze通过自动安装的~/.*.scmbrc文件进行配置。要更改git配置,请编辑~/.git.scmbrc

每个功能都是模块化的,所以你可以自由忽略你不想使用的部分。只需在~/.scm_breeze/scm_breeze.sh中注释掉相关行即可。

注意: 更改任何设置后,你需要运行source ~/.bashrc(或source "${ZDOTDIR:-$HOME}/.zshrc")

我知道我们会对每天使用的别名产生依赖,所以我已经使别名系统完全可定制。在别名方面,你有两个选择:

1) 配置并使用SCM Breeze提供的别名

只需在~/.git.scmbrc中调整别名。你还可以更改或删除任何键盘快捷键。这些别名还带有Tab补全功能。例如,你可以输入gco <tab>来Tab补全你的分支列表。

2) 使用你自己的别名

在你的git.scmbrc配置文件中,只需将git_setup_aliases选项设置为no。然后将使用你现有的git别名,你仍然可以使用数字快捷方式功能。SCM Breeze创建了一个函数来包装'git'命令,该函数展开数字参数,并在可用时使用hub

仍然会为SCM Breeze的核心功能定义一些别名,比如用于扩展git statusgs,以及用于git add函数的ga

如果你已经有一个像alias gco="git checkout"这样的别名,你现在可以输入gco 1来检出SCM Breeze的git status输出中的第一个文件。

用户名和"staff"组的自定义表情符号

ll命令为文件添加了编号快捷方式,但另一个有趣的功能是用自定义表情符号替换你的用户名和"staff"组。你可以在~/.user_sym~/.staff_sym中设置这些。

自定义用户和staff表情符号

通过运行以下命令设置你自己的表情符号:

echo 🍀 > ~/.user_sym
echo 🖥 > ~/.staff_sym

我还喜欢在Bash提示符中使用~/.user_sym

关于别名Tab补全的说明

Bash

如果你使用自己的别名,SCM Breeze将不会为你的别名设置bash tab补全。你需要自己设置。

Zsh

你只需设置选项:setopt no_complete_aliases(oh-my-zsh默认设置这个)。然后Zsh将展开像gb这样的别名为git branch,并使用那个补全。

更新

请运行update_scm_breeze获取最新代码。这将从Github更新SCM Breeze,如果添加了任何新设置,它将创建或修补你的~/.*.scmbrc配置文件。

卸载

~/.scm_breeze/uninstall.sh

卸载脚本会从你的.bashrc.zshrc中删除以下行:

[ -s "$HOME/.scm_breeze/scm_breeze.sh" ] && source "$HOME/.scm_breeze/scm_breeze.sh"

贡献

SCM Breeze在Github上的地址是scmbreeze/scm_breeze

如果你在.bashrc.zshrc中有任何很棒的SCM脚本,请随时向我发送pull request。将这个项目变成SCM的oh-my-zsh会很酷。

享受使用!

替代项目

  1. https://github.com/shinriyo/breeze fish支持
  2. https://github.com/mroth/scmpuff 静态go二进制文件
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号