#git #bisect #friendly #assist #assistant #assistive

bin+lib git-assist

一套友好的辅助 git 命令

1 个不稳定版本

0.1.0 2023 年 8 月 24 日

#4#bisect

MPL-2.0 许可证

29KB
522

git-assist

Docs.rs Crates.io Downloads Version

概述

友好的 git 助手。

安装

通过以下方式安装 git-assist

cargo install git-assist

用法

git-assist 目前实现了以下 git 命令的辅助功能

gitbisect

git-assist 目前实现了以下与 git bisect 相关的命令

gitassist bisect skip-pull-requests[选项]

Usage: git-assist bisect skip-pull-requests [OPTIONS]

Options:
      --remote-url <REMOTE_URL>  Remote url to fetch pull requests from
      --good <GOOD>              A known "good" commit
      --bad <BAD>                A known "bad" commit
      --dry-run                  Perform a "dry" run
  -h, --help                     Print help

大多数选项可以以命令行参数的形式传递,也可以在之后交互式地输入。

为什么 `skip-pull-requests` 子命令很有用?

Github 支持三种合并方案

  • 合并:当你在 GitHub.com 上的拉取请求中点击默认的“合并”选项时,功能分支的所有提交都会作为一个合并提交添加到基分支。拉取请求使用 --no-ff 选项进行合并。
  • 压缩合并:当你在 GitHub.com 上的拉取请求中选择“压缩合并”选项时,拉取请求的提交会被压缩成一个单独的提交。
  • 变基合并:当你在 GitHub.com 上的拉取请求中选择“变基合并”选项时,主题分支(或头分支)的所有提交都会单独添加到基分支,而不产生合并提交。

这些方案各有优缺点,当运行 git bisect 来查找引入错误的提交时。

  • 合并:没有清晰的线性历史,因此有歧义。
  • 压缩合并:在压缩过程中基本会丢失大量有用的信息,这会影响 git bisect 的正常运行。
  • 变基合并:除非你的所有提交都能在所有时间将项目置于可构建状态,否则运行 git bisect 将是一件既嘈杂又费力的工作。

那么,如果能将“压缩合并”的便利性与“变基合并”的历史保留特性结合起来会怎样?

skip-pull-requests 子命令的作用

  1. 从与仓库远程 URL 相关的拉取请求中获取所有拉取请求。
  2. 过滤掉与 good..bad 提交范围不重叠的任何拉取请求。
  3. 为每个拉取请求运行(或在 --dry-run 的情况下仅打印)git bisect skip base..head^

skip-pull-requests 子命令的一般用法如下

git bisect start
git assist bisect skip-pull-requests --good <GOOD> --bad <BAD> ...
git bisect good <GOOD>
git bisect bad <BAD>
...

贡献

请阅读 CONTRIBUTING.md 了解我们的 行为准则,以及向我们提交拉取请求的过程。
和提交拉取请求的流程。

版本控制

我们使用 SemVer 进行版本控制。有关可用版本,请参阅本存储库的 标签

许可证

本项目采用 MPL-2.0 许可证 - 详细内容请参阅 LICENSE.md 文件。

依赖项

~20–38MB
~616K SLoC