20 个不稳定版本 (5 个破坏性更新)
0.6.4 | 2023年11月12日 |
---|---|
0.6.0 | 2023年7月25日 |
0.3.7 | 2023年1月25日 |
0.3.6 | 2022年12月28日 |
0.3.3 | 2022年8月30日 |
#164 in 开发工具
每月81次下载
110KB
2.5K SLoC
Gex
注意:GEX 是未完成软件。 因此,许多功能尚未实现,界面可能随时更改。
受 Magit 启发的 Git 工作流改进 CLI 工具。 此项目仍在初期开发中,但我正在积极使用它,并 应该 会相对快速地添加新功能。
目标
这主要是一个个人项目,因为我最近从 Emacs 切换到 Neovim,并怀念使用 Magit 的简单性和效率。然而,我还有一些一般性的目标,这些目标可能会改变
- 简单 - 界面简洁。
- 直观 - 应该很容易学会使用 gex。
- 跨平台 - 主要关注 Linux,但应该能在 Windows 和 MacOS 上很好地运行。
- 可配置 - gex 中的一些首选项应可配置,以适应您的工作流程。
- 全面* - 您应该能够使用 gex 做到在 git 中能做的一切。
* gex 支持使用 : 执行任意 git 命令,当某些功能尚未可用时。
非目标
- Magit 端口
虽然它是一个重要的灵感来源,但我不试图 1:1 端口 Magit 的行为和功能。
安装
Crates.io
注意: 使用此安装方法,您需要在系统中安装 Rust。
$ cargo install gex
其他
Gex 软件包也在几个仓库中由社区维护。
使用方法
要进入 gex,只需在控制台中输入 gex
,可选地提供路径。
$ gex
完整使用方法
$ gex --help
Git workflow improvement CLI tool inspired by Magit
Usage: gex [OPTIONS] [PATH]
Arguments:
[PATH] The path to the repository [default: .]
Options:
-c, --config-file <PATH> Path to a config file to use
-h, --help Print help
-V, --version Print version
导航
键 | 动作 |
---|---|
j / 下 | 向下移动 |
k / 上 | 向上移动 |
J | 跳转到下一个文件 |
K | 跳转到上一个文件 |
Tab / 空格 | 切换展开 |
g | 跳转到顶部 |
G | 跳转到底部 |
Gex 动作
键 | 动作 |
---|---|
文本 | 阶段项目 |
S | 阶段所有项目 |
u | 取消阶段项目 |
U | 取消阶段所有项目 |
e | 编辑文件/块 |
F | 从远程拉取 |
: | 执行git命令 |
! | 执行子进程 |
r | 刷新 |
Esc | 取消当前操作 |
q | 退出gex |
Gex命令
键 | 动作 |
---|---|
c | 提交 |
b | 分支 |
p | 推送 |
z | 暂存 |
配置
Gex将在以下位置查找配置文件:
操作系统 | 路径 |
---|---|
Linux | Linux: $XDG_CONFIG_HOME/gex/config.toml |
MacOS | MacOS: $HOME/Library/Application Support/gex/config.toml |
Windows | Windows: {FOLDERID_RoamingAppData}/gex/config.toml |
以下是一个示例 config.toml
[options]
auto_expand_files = false
auto_expand_hunks = true
editor = "nvim" # defaults to git's core.editor or $EDITOR or "vi"
lookahead_lines = 5
sort_branches = "-committerdate" # key to pass to `git branch --sort`. https://git-scm.cn/docs/git-for-each-ref#_field_names
truncate_lines = true # `false` is not recommended - see #37
ws_error_highlight = "new" # override git's diff.wsErrorHighlight
# Named colours use the terminal colour scheme. You can also describe your colours
# by hex string "#RRGGBB", RGB "rgb_(r,g,b)" or by Ansi "ansi_(value)".
#
# This example uses a Gruvbox colour theme.
[colors]
foreground = "#ebdbb2"
background = "#282828"
heading = "#fabd2f"
hunk_head = "#d3869b"
addition = "#b8bb26"
deletion = "#fb4934"
key = "#d79921"
error = "#cc241d"
[keymap.navigation]
move_down = ['j', "Down"]
move_up = ['k', "Up"]
next_file = ['J']
previous_file = ['K']
toggle_expand = [" ", "Tab"]
goto_top = ['g']
goto_bottom = ['G']
版本控制
版本号从 0.X
增加表示可能破坏某些人工作流程的一些更改。这很难定义,所以如果它不符合您的期望,请见谅。通常这意味着更改默认设置或重新设计UI的部分。
版本号从 0.x.Y
增加表示不会破坏任何工作流程的更改 - 即修复错误或添加功能。
增加的任何数字都故意与更新的 大小 无关。
1.0.0
将在我认为软件“完成”时到来,前提是可以进行小的改进/功能或错误修复。这意味着什么非常主观,并且我的想法可能会随着项目的进展而演变。
许可证
本项目可双重许可,您可以选择以下之一:
- MIT许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
- Apache许可证,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
任选其一。
贡献
请参阅 CONTRIBUTING.md。
除非您明确声明,否则根据Apache-2.0许可证定义,任何有意提交以包含在作品中的贡献,将根据上述方式双重许可,而不附加任何额外条款或条件。
依赖项
~12–24MB
~383K SLoC