2 个版本 (1 个稳定版)

2.3.0 2023年7月19日
0.1.0 2022年6月2日

文本编辑器 中排名 152

每月下载量 35
3 个crate 中使用

GPL-3.0-or-later

46KB
1K SLoC

Crates.io Packaging status GitHub license Coverage Status

Git Interactive Rebase Tool

原生跨平台全功能基于终端的 序列编辑器,用于 Git 1.7.8+ 中的交互式变基。

Git Interactive Rebase Tool

目录

功能

跨平台

在 Linux、macOS、Windows 和许多其他操作系统上构建和运行。

设置动作

轻松设置动作为 picksquashfixupeditreworddrop

Basic operations

重新排序变基列表

按单个按键重新排序动作列表。

Reorder items

多行修改

使用可视化模式一次性更改动作并重新排序多行。

Visual mode

切换 break 分隔符

Toggle breaks

查看提交详情和差异

按键查看提交概览和完整的提交差异。

Commit overview

Commit diff

支持 Unicode 和表情符号

Unicode support

Emoji support

编辑 exec 命令

轻松编辑由 exec 命令执行的命令。

exec action command edit

在外部编辑器中编辑

需要在您的 Git 编辑器中做些什么?快速切换到您的编辑器,进行更改,然后返回工具。

Shell out to editor

设置

大多数系统

git config --global sequence.editor interactive-rebase-tool

Windows

标准命令提示符和 Windows Terminal

git config --global sequence.editor "'C:/path/to/interactive-rebase-tool.exe'"

GitBash

GitBash 需要使用 winpty 才能正确运行,因此要设置编辑器,请使用

git config --global sequence.editor "winpty /c/path/to/interactive-rebase-tool.exe"

备注

Windows 10 以前的版本有 与饱和深色颜色相关的严重渲染问题,例如在现代显示器上完全无法辨认的蓝色。虽然可以避免使用饱和颜色,但更好的选择是使用 Microsoft 的 ColorTool 更新主题。

临时覆盖

您可以通过使用 GIT_SEQUENCE_EDITOR 环境变量来临时使用不同的序列编辑器。

GIT_SEQUENCE_EDITOR=emacs git rebase -i [<upstream> [<branch>]]

直接使用

interactive-rebase-tool <rebase-todo-filepath>
interactive-rebase-tool --help
interactive-rebase-tool --version

获取帮助

该工具内置帮助,可以通过使用?键来访问。

常用默认按键绑定

按键绑定可以自定义,有关所有按键绑定和配置信息,请参阅配置

按键 模式 描述
? 所有 显示帮助
正常/差异 向上移动选择
正常/差异 向下移动选择
Page Up 正常/差异 向上移动选择五行
Page Down 正常/差异 向下移动选择五行
Home 正常/差异 移动选择到列表开头
End 正常/差异 移动选择到列表末尾
q 正常/差异 中止交互式变基
Q 正常/差异 立即中止交互式变基
w 正常/差异 写入交互式变基文件
W 正常/差异 立即写入交互式变基文件
j 正常/差异 将选定的提交向下移动
k 正常/差异 将选定的提交向上移动
b 正常 切换中断动作
p 正常/差异 设置选定的提交为拣选
r 正常/差异 设置选定的提交为重写
e 正常/差异 设置选定的提交为编辑
s 正常/差异 设置选定的提交为合并
f 正常/差异 设置选定的提交为修复
d 正常/差异 设置选定的提交为删除
E 正常 编辑可编辑动作的命令
v 正常/差异 进入和退出视觉模式
I 正常 插入新行
Delete 正常/差异 删除选中的行
! 正常/差异 在外部编辑器中打开todo文件
控制+z 正常/差异 撤销上一个更改
控制+y 正常/差异 重做之前撤销的更改
c 正常/差异 显示提交信息
差异 向下滚动视图
差异 向上滚动视图
差异 向左滚动视图
差异 向右滚动视图
Home 差异 滚动视图到顶部
End 差异 滚动视图到底部
PageUp 差异 向上滚动视图一步
PageDown 差异 向下滚动视图一步
d 差异 显示完整提交差异

支持的平台

Linux

支持所有基于Linux的发行版。该项目在Debian和Ubuntu上进行了测试,但应在任何标准的Linux发行版上运行。如果该项目在您的平台上无法运行,请提交一个问题

该工具已在TilixGnome终端中进行了测试。

macOS

支持最新版本的macOS,尽管旧版本也应能工作。

该工具已在iTerm2终端中进行了测试。

Windows

支持Windows 8.1和Windows 10以及Windows 11的最新版本。

该工具在Windows 10的PowerShellWindows控制台内部的命令提示符和Windows终端中进行了测试。由Git for Windows提供的最新版本的Git Bash也得到支持。

Windows控制台和Git Bash仅有限支持,可能存在一些功能或图形问题。不支持在传统模式下运行的Windows控制台。

Cygwin不受官方支持。

其他

其他平台未官方支持。一些平台有社区支持,如果您在您的平台上遇到项目无法正常工作的麻烦,请提交一个问题

开发

安装 Rust

要开始开发项目,您需要安装 Rust,通常可以使用rustup来完成。

设置

Cargo Make

此项目使用cargo-make作为任务执行器。要安装

cargo install --force cargo-make

Debian 及其衍生版

如果您计划构建发行版,您将需要pkg-configliblzma-dev。您可以使用apt安装它们。

sudo apt install pkg-config liblzma-dev

构建和运行

要构建或运行项目,请在项目根目录下运行

# only build
cargo make build --release
# build and run
cargo run -- <path-to-git-rebase-todo-file>

示例 rebase todo 文件可以在 ./test/fixtures 中找到。

测试

所有功能都有自动化测试,可以使用以下命令运行

cargo make test

文档

项目的 API 文档使用 Rust Doc 生成

cargo make docs

代码风格检查

此项目使用 Clippy 提供额外的代码风格检查,与 rustc 提供的代码风格检查相结合,使用以下命令运行

cargo make lint

这将使用稳定版和夜间版运行代码风格检查。夜间版的代码风格检查可能会显示错误,但不会导致失败。

格式化

此项目使用 rust-fmt 提供一致的格式。一个有用的脚本将确保所有文件都正确格式化

cargo make format

覆盖率

项目使用Tarpaulin生成覆盖率报告。覆盖率报告用于查找测试中的空白。要生成覆盖率报告

cargo make coverage

除了打印到 CLI 的报告外,还可以在 coverage 目录中找到 HTML 报告。

发行版

构建
cargo make deb

deb 文件将写入到target/debian/interactive-rebase-tool_*.deb

许可

Git Interactive Rebase Tool 采用 GPLv3 许可证发布。请参阅LICENSE

有关此项目使用的第三方库的许可证,请参阅第三方许可证

依赖项

~1–7MB
~34K SLoC