2 个版本 (1 个稳定版)
2.3.0 | 2023年7月19日 |
---|---|
0.1.0 | 2022年6月2日 |
在 文本编辑器 中排名 152
每月下载量 35 次
在 3 个crate 中使用
46KB
1K SLoC
Git Interactive Rebase Tool
原生跨平台全功能基于终端的 序列编辑器,用于 Git 1.7.8+ 中的交互式变基。
目录
功能
跨平台
在 Linux、macOS、Windows 和许多其他操作系统上构建和运行。
设置动作
轻松设置动作为 pick
、squash
、fixup
、edit
、reword
和 drop
。
重新排序变基列表
按单个按键重新排序动作列表。
多行修改
使用可视化模式一次性更改动作并重新排序多行。
切换 break
分隔符
查看提交详情和差异
按键查看提交概览和完整的提交差异。
支持 Unicode 和表情符号
编辑 exec
命令
轻松编辑由 exec
命令执行的命令。
在外部编辑器中编辑
需要在您的 Git 编辑器中做些什么?快速切换到您的编辑器,进行更改,然后返回工具。
设置
大多数系统
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发行版上运行。如果该项目在您的平台上无法运行,请提交一个问题。
macOS
支持最新版本的macOS,尽管旧版本也应能工作。
Windows
支持Windows 8.1和Windows 10以及Windows 11的最新版本。
该工具在Windows 10的PowerShell和Windows控制台内部的命令提示符和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-config
和liblzma-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
。
相关项目
- rebase-editor是一个使用 Node.js 编写的非常类似的项目。
- cj-git-patchtool是另一个用于大量执行 git rebase 的工具。
许可
Git Interactive Rebase Tool 采用 GPLv3 许可证发布。请参阅LICENSE。
有关此项目使用的第三方库的许可证,请参阅第三方许可证。
依赖项
~1–7MB
~34K SLoC