获取tig提交的sha数

Take sha number of commit by tig

我喜欢使用 tig 客户端浏览 git 次提交。

但我现在还缺少一件事。

是否有键绑定来获取我当前所在的 git 提交的 sha 编号?

检查 jonas/tig issue 557 中建议的命令是否适合您:

bind generic 9 !sh -c "echo -n %(commit) | xclip -selection c && echo Copied %(commit) to clipboard"

这会在您的剪贴板中复制 current commit SHA1

Wiki binding page 中,您还有 Mac 或 Cygwin 的示例:

bind generic 9 !@sh -c "git show -s --format=%s %(commit) | xclip -selection c" # Linux
bind generic 9 !@sh -c "git show -s --format=%s %(commit) | pbcopy" # Mac
bind generic 9 !@sh -c "git show -s --format=%s %(commit) > /dev/clipboard" # Cygwin

OP megas proposes to use git rev-parse:

bind generic 9 !@sh -c "git rev-parse --short %(commit) | pbcopy"

MacOS

bind generic 9 !@sh -c "printf '%s' %(commit) | pbcopy"

或者,复制短的 sha-1:

bind generic 9 !@sh -c "printf '%s' $(git rev-parse --short %(commit)) | pbcopy"

灵感来源:/tig/doc/tigrc(5) - Bind Command 示例部分。

VonC 的答案中列出的解决方案对我不起作用,因为粘贴结果中有 return 行 (⌘+V)。所以我无法在 tig :!git rebase -i [paste_here_hitting_⌘+V]~

中输入这样的命令

MacOS上复制短SHA1(可以很容易地适应其他OS):

bind generic 9 +@sh -c "printf '%s' $(git rev-parse --short %(commit)) | pbcopy && echo Copied %(commit) to clipboard"

作为对其他答案的改进,此版本会向状态栏打印一条消息,这比关闭 tig UI 或不打印任何内容更好。 + 选项标志允许这样做(source). Also no extra newline character at the end like VonC 的回答。