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开发工具

GPL-3.0+

49KB
960

Git Bonsai

Git Bonsai 是一个命令行工具,可帮助您照料 Git 园林中的分支。

用法

在 git 仓库检查点中运行 git bonsai 即可。

它做什么?

Git Bonsai 执行以下操作

  1. 获取远程更改。

  2. 遍历所有本地跟踪分支,并将它们更新到远程对应分支。

  3. 列出可以安全删除的分支,并允许您选择要删除的分支。

安全吗?

Git Bonsai 采取多项预防措施,以确保不会删除任何宝贵的内容

  1. 如果有未提交的更改,则拒绝运行。这包括未知文件。

  2. 在删除任何分支之前,总是提示您,并解释为什么该分支可以安全删除。

  3. 如果该分支未包含在其他分支中,则拒绝删除。

  4. 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 脚本创建此仓库)

topic1topic1-1 分支可以安全删除。 topic2 不能。 duplicate1duplicate2 中的一个也可以删除,但不能同时删除。

让我们运行 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将名为mainmaster的分支视为受保护。您可以使用以下命令添加其他受保护分支: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