#git-status #shell-prompt #executable #git-directory #staged #commit #display

app octogit

一个简单的适用于 Shell 提示符的 git 状态可执行程序

3 个稳定版本

2.2.0 2024年1月29日
2.1.0 2023年12月20日
2.0.2 2023年12月15日

172开发工具

49 每月下载量

MIT 许可证

550KB
799

Octogit

这是一个我用来在我的 Shell 提示符中显示 git 状态的程序。

您可以使用将其二进制文件放置在 Shell 提示符中的方法来使用它,以便它被执行。

在 fish 中,它可能看起来像这样

function fish_prompt
    printf (pwd)' '
    octogit
end

默认情况下,octogit 将此输出打印到 stdout(如果您当前 git 目录中每个类型的更改都有),以空格结束但不换行

octogit--test

每个元素的顺序含义

  1. 暂存区
  2. 已获取但尚未拉取的提交
  3. 尚未推送到远程的提交
  4. 暂存重命名文件
  5. 暂存修改
  6. 暂存新文件
  7. 暂存删除
  8. 未暂存修改
  9. 未暂存新文件
  10. 未暂存删除

它使用 nerd font 符号表示某些元素。

如果您不想使用 nerd font,请使用 --ascii-symbols 标志

octogit--test--ascii-符号

只有至少有一个元素的才会打印出来,这使得测试 octogit 的完整外观有点烦人。这就是为什么有 --test 标志的原因 - 无论您当前的 git 目录实际上有多少更改,您都可以看到 octogit 的整个输出。

默认情况下,提交(暂存、未拉取、未推送)以黄色显示,暂存更改以绿色显示,未暂存更改以青色显示,遵循您的终端颜色方案。

您可以将每个类别的默认值更改为您提供的这些 8 种颜色之一

黑色、红色、绿色、黄色、蓝色、紫色、青色、白色

octogit--颜色-全部-暂存紫色

或通过提供十六进制颜色:octogit --color-all-staged AF87FF

颜色的 cAsE 不重要。

然后您可以根据需要覆盖默认值以特定元素:octogit --color-all-unstaged blue --color-deleted red

同样适用于所使用的 字形octogit --symbol-unpushed 󰤇 --symbol-deleted 󱇪

有趣的是,你并不局限于单个字符。所以如果愿意的话,也可以是一个完整的单词!:octogit --symbol-unpushed meow

对于颜色也类似:octogit --color-staged-deleted '87FF5F this is my brigher green that I want to use for this element'

尽管将整个句子放入标志中,但只会使用十六进制颜色,忽略所有其他文本。你可以将这种行为用作注释。不适用于单词颜色(如 greenred 等)。

由于这个程序是你将在你的 shell 提示符中使用的,它默认不会打印错误信息。如果某些事情没有正常工作,请使用 -v/--verbose 标志交互式地检查发生了什么

octogit-v--test--颜色-未暂存'non-existent-颜色'

换句话说,如果你的提示符有任何错误,它仍然会通过使用默认值继续工作。

这可以防止你因为指定了错误的参数而有一个损坏的 shell 提示符,例如。

如果你不想看到某个元素,你可以将其删除:octogit --remove-unpulled --remove-deleted

请注意,所有获取这些元素的 git 命令仍然会被执行,所以通过删除一些元素你不会得到速度上的提升。

删除元素的也会 不会 转移到另一个元素。

在一些更知名的 shell 提示符 vcs 中,所有已暂存更改都会显示在单个元素中。

然而,在 octogit 中,如果你删除了一个元素,你将缺少那条信息。

例如,如果你讨厌看到 stash,这很有用。

用法

A simple executable git status for your shell prompt.

Usage: octogit [OPTIONS]

Options:
  -v, --verbose
          octogit doesn't print errors by default, because it's supposed to be in
          your shell prompt constantly. When you do want to see the errors, use this
          flag
      --ascii-symbols
          octogit uses nerd font symbols for some elements by default. Use this flag
          if you don't use a nerd font. You can see both the nerd and ascii defaults
          for every category later down in this help
      --test
          Will print every single element. Helpful for testing the output without
          having to be in a git directory with certain changes
      --color-all-commits <COLOR_ALL_COMMITS>
          [default: yellow] For every color, you can either specify one of the main
          8 colors from your terminal color scheme: black, red, green, yellow, blue,
          purple, cyan, white Or a hex code, without the # symbol like: FFAFD7 For
          both hex codes and color names, the cAsE doesn't matter
      --color-all-staged <COLOR_ALL_STAGED>
          [default: green]
      --color-all-unstaged <COLOR_ALL_UNSTAGED>
          [default: cyan]
      --color-stashed <COLOR_STASHED>
          [default: --color-all-commits]
      --color-unpulled <COLOR_UNPULLED>
          [default: --color-all-commits]
      --color-unpushed <COLOR_UNPUSHED>
          [default: --color-all-commits]
      --color-renamed <COLOR_RENAMED>
          [default: --color-all-staged]
      --color-staged <COLOR_STAGED>
          [default: --color-all-staged]
      --color-added <COLOR_ADDED>
          [default: --color-all-staged]
      --color-staged-deleted <COLOR_STAGED_DELETED>
          [default: --color-all-staged]
      --color-modified <COLOR_MODIFIED>
          [default: --color-all-unstaged]
      --color-unstaged <COLOR_UNSTAGED>
          [default: --color-all-unstaged]
      --color-deleted <COLOR_DELETED>
          [default: --color-all-unstaged]
      --symbol-stashed <SYMBOL_STASHED>
          [default: 󰟫 or *]
      --symbol-unpulled <SYMBOL_UNPULLED>
          [default:  or <]
      --symbol-unpushed <SYMBOL_UNPUSHED>
          [default:  or >]
      --symbol-renamed <SYMBOL_RENAMED>
          [default: 󰕍 or &]
      --symbol-staged <SYMBOL_STAGED>
          [default: 󰄬 or !]
      --symbol-added <SYMBOL_ADDED>
          [default: 󰐕 or +]
      --symbol-staged-deleted <SYMBOL_STAGED_DELETED>
          [default: 󰍴 or -]
      --symbol-modified <SYMBOL_MODIFIED>
          [default:  or !]
      --symbol-unstaged <SYMBOL_UNSTAGED>
          [default: 󰐕 or +]
      --symbol-deleted <SYMBOL_DELETED>
          [default: 󰍴 or -]
      --remove-stashed
          Remove an element from outputting to stdout using the following flags.
          Keep in mind, everything still gets processed, so you won't get a speed
          boost. If you remove something, you will then just lack that information,
          instead of it getting transferred to another element, like you may expect.
          Helpful if you really hate staged deletions specifically. /s
      --remove-unpulled
          
      --remove-unpushed
          
      --remove-renamed
          
      --remove-staged
          
      --remove-added
          
      --remove-staged-deleted
          
      --remove-modified
          
      --remove-unstaged
          
      --remove-deleted
          
  -h, --help
          Print help
  -V, --version
          Print version

安装

cargo install octogit

也支持 cargo-binstallcargo-quickinstall

卸载

cargo uninstall octogit

依赖

~3–12MB
~144K SLoC