#git #yourself #point #update-ref #porcelain #shooting #foot

app git-point

避免因操作不当而损害自己,使用 porcelain git update-ref

4 个版本

0.2.2 2024 年 8 月 2 日
0.2.1 2024 年 6 月 7 日
0.2.0 2024 年 6 月 7 日
0.1.0 2024 年 5 月 28 日

开发工具 中排名第 442

Download history 141/week @ 2024-05-25 165/week @ 2024-06-01 85/week @ 2024-06-08 6/week @ 2024-06-15 70/week @ 2024-07-27 36/week @ 2024-08-03

每月下载 106

MIT 许可证

2.5MB
734 行代码(不包括注释)

包含 (ELF 可执行文件/库, 7MB) result/bin/git-point

git-point — 避免因操作不当而损害自己,使用 porcelain git update-ref

Usage: git-point [OPTIONS] <FROM> <TO>

Arguments:
  <FROM>
          ref to update

  <TO>
          revision to point <FROM> to

Options:
  -n, --new <KIND>
          create a new ref of <KIND> instead of updating an existing one

          Possible values:
          - tag:           New lightweight tag in refs/tags/<FROM>
          - branch:        New branch refs/heads/<FROM>
          - remote-branch: refs/remotes/<FROM> (e.g. refs/remotes/origin/main)
          - raw:           No prefix, interpreted literally (like update-ref, be careful!)

  -W, --allow-worktree
          Allow mutating checked out refs. This will *not* change any of the actual files in the worktree

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

git-point 是一个单条命令,用于更改引用指向的提交 — 是 git update-ref 的 porcelain 替代方案,后者容易误用,无法区分更新和创建引用,已检出引用和未检出引用,且不记录任何信息。

git-point

  • 始终需要 <FROM> 参数来解析到唯一且存在的引用,或者通过 --new 有意指定创建
  • 始终完全解析 <TO> 参数到唯一且存在的提交
  • 允许对 <FROM><TO> 进行缩写(例如,使用 v2.3 而不是 refs/tags/v2.3
  • 永远不会修改你的工作树
  • 接受完整的修订语法,因此你可以随心所欲地使用 git point v2.3 'HEAD^{/version bump: 2.3}'
  • 记录前后状态

安装和使用

Nix

如果您有Nix实现,您可以使用git-point而不需要安装,例如使用flakes

$ nix run 'github:Qyriad/git-point' -- some-topic some-topic~3
# OR
$ nix shell 'github:Qyriad/git-point'

不使用flakes

$ nix run --impure --expr 'import (fetchGit "https://github.com/Qyriad/git-point") { }' . -- some-topic some-topic~3
# OR
$ nix shell --impure 'import (fetchGit "https://github.com/Qyriad/git-point") { }'
[nix-shell]$ git-point some-topic some-topic~3

使用 nix-shell

$ nix-shell --expr 'import (fetchGit "https://github.com/Qyriad/git-point") { }'

Cargo

git-point是用Rust编写的,因此可以使用Cargo进行安装

$ cargo install git-point

但请注意,这 不会 安装git-point的手册页。您可以使用以下命令自行生成:git point --mangen,该命令将手册页输出到标准输出。如果您想安装它,可以这样做

$ git point --mangen > /usr/local/share/man1/git-point.1

依赖项

~16–27MB
~431K SLoC