5 个不稳定版本
0.3.0 | 2022年11月13日 |
---|---|
0.2.2 | 2022年7月22日 |
0.2.1 | 2021年5月25日 |
0.2.0 | 2021年3月29日 |
0.1.0 | 2020年3月22日 |
#721 在 开发工具
49KB
960 行
Git Bonsai
Git Bonsai 是一个命令行工具,可帮助您照料 Git 园林中的分支。
用法
在 git 仓库检查点中运行 git bonsai
即可。
它做什么?
Git Bonsai 执行以下操作
-
获取远程更改。
-
遍历所有本地跟踪分支,并将它们更新到远程对应分支。
-
列出可以安全删除的分支,并允许您选择要删除的分支。
安全吗?
Git Bonsai 采取多项预防措施,以确保不会删除任何宝贵的内容
-
如果有未提交的更改,则拒绝运行。这包括未知文件。
-
在删除任何分支之前,总是提示您,并解释为什么该分支可以安全删除。
-
如果该分支未包含在其他分支中,则拒绝删除。
-
Git Bonsai 从不接触远程仓库。
演示
这是一个示例仓库
$ git log --oneline --all --graph
* b87566d (duplicate2, duplicate1) Create duplicate1
* e02d47e (HEAD -> master) Merging topic1
|\
| * 020b54c (topic1) Merging topic1-1
| |\
| | * cd060dc (topic1-1) Create topic1-1
| |/
| * f356524 Create topic1
|/
| * 85a9880 (topic2) Create topic2
|/
* 0f209d0 Init
(您可以使用 create-demo-repository
脚本创建此仓库)
topic1
和 topic1-1
分支可以安全删除。 topic2
不能。 duplicate1
和 duplicate2
中的一个也可以删除,但不能同时删除。
让我们运行 Git Bonsai
$ git bonsai
Info: Fetching changes
These branches point to the same commit, but no other branch contains this
commit, so you can delete all of them but one.
Select branches to delete:
> [x] duplicate1
[x] duplicate2
我按 Space
取消选择 duplicate1
,然后按 Enter
继续操作。
Info: Deleting duplicate2
Select branches to delete:
> [x] topic1, contained in:
- master
- duplicate1
[x] topic1-1, contained in:
- topic1
- duplicate1
- master
看起来不错,所以我按 Enter
。
Info: Deleting topic1
Info: Deleting topic1-1
现在让我们看看仓库
$ git log --oneline --all --graph
* 0dfd179 (duplicate1) Create duplicate1
* 5d06a2d (HEAD -> master) Merging topic1
|\
| * 6a3b1de Merging topic1-1
| |\
| | * 7671947 Create topic1-1
| |/
| * c328fee Create topic1
|/
| * 1616d9e (topic2) Create topic2
|/
* 71913d9 Init
安装
稳定版本
安装的最简单方法是下载 发布页面 上的存档,解压缩它,并将 git-bonsai
二进制文件复制到 $PATH
目录中。
Git 快照
主分支的快照可在builds.agateau.com/git-bonsai获取。
配置
受保护分支
Git Bonsai将名为main
和master
的分支视为受保护。您可以使用以下命令添加其他受保护分支:git config --add git-bonsai protected-branches <branch-name>
。
构建它
Git Bonsai是用Rust编写的。要构建它,请安装Rust,然后运行
cargo install git-bonsai
调试
如果您定义了GB_DEBUG
环境变量,Git Bonsai将打印它运行的所有git命令。
为什么还需要另一个git清理工具?
我创建了Git Bonsai,因为我需要一个这样的工具,同时也是学习Rust的一种方式。当然,已经有类似这样的工具,可能更强大,而且Rust代码可能需要改进,欢迎提交pull request!
依赖项
~3–11MB
~99K SLoC