【问题标题】:git help in Windows command promptWindows 命令提示符中的 git 帮助
【发布时间】:2014-04-18 12:35:05
【问题描述】:

Windows 上的git help 命令(msysgit 分发版)每次运行时都会生成 Web 浏览器。我试过git help -m 报告"No manual entry for ..."git help -i"info: Terminal type 'msys' is not smart enough to run Info." 同样发生在bashCygwin 下。

有什么明智的方法可以在cmd 终端中获得轻量级的帮助吗?

【问题讨论】:

    标签: windows git cmd windows-console


    【解决方案1】:

    它适用于特定命令:git <command> -h

    编辑,感谢@the-happy-hippo

    但它只显示了一个简短的描述,而不是完整的描述,就像 git help <command>git <command> --help 在 Windows 上给出的那样。

    【讨论】:

    • 是的,这显示了简短的帮助,但不是带有扩展描述、示例等的完整手册页(例如,比较 git help add -mgit help add 的输出)。
    • 已编辑,感谢您的澄清。不太确定您的示例,前者试图提供帮助,但由于我的 Windows 上没有人而失败(请参阅stackoverflow.com/a/5517857/2007631),后者仅提供 html 帮助..
    • 知道 -h 为您提供简短帮助很有用。
    【解决方案2】:

    git <verb> -h 在同一终端窗口中显示命令用法。

    另一方面,git <verb> --helpgit help <verb> 打开浏览器。

    【讨论】:

      【解决方案3】:

      Git 2.x 更新(2017 年 6 月,Git 2.13.1)

      你还没有男人:

      > git -c help.format=man help add
      warning: failed to exec 'man': No such file or directory
      fatal: no man viewer handled the request
      

      git <verb> --help 也一样。
      git <verb> -h 不打印手册页,只打印简短的用法部分(与 man 无关)


      在 Git 2.34(2021 年第四季度)中,当 git cmd -h 显示多行使用文本(例如 cmd 子命令可能需要子子命令)时,parse-options API 学会了对齐这些行,即使跨 @ 987654321@/l10n.

      参见commit 4631cfc(2021 年 9 月 21 日)和 commit 84122eccommit 78a5091commit 5d70198(2021 年 9 月 13 日)Ævar Arnfjörð Bjarmason (avar)
      (由 @987654329 中的 Junio C Hamano -- gitster -- 合并@,2021 年 10 月 13 日)

      parse-options:正确对齐持续使用输出

      签字人:Ævar Arnfjörð Bjarmason

      一些命令,例如“git stash(man) 发出连续的选项输出,例如git stash -h,因为 usage_with_options_internal() 以自己的空格作为前缀,所以结果输出没有正确对齐。
      让我们考虑添加的空格,它可以正确对齐输出。

      git stash”命令的用法输出带有 N_() 翻译,合法地跨越多行;

      N_("git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"
         "          [-u|--include-untracked] [-a|--all] [-m|--message <message>]\n"
      [...]
      

      我们希望该输出与初始“git stash”输出的长度保持一致,但由于usage_with_options_internal() 添加了自己的空白前缀,我们未能完成,在此更改之前我们会发出:

      $ git stash -h
      usage: git stash list [<options>]
         or: git stash show [<options>] [<stash>]
         [...]
         or: git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
                [-u|--include-untracked] [-a|--all] [-m|--message <message>]
                [...]
      

      现在我们将正确地发出对齐的输出。

      上面的最后四行将改为(对上面的仅空格更改):

      [...]
      or: git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
                    [-u|--include-untracked] [-a|--all] [-m|--message <message>]
                    [...]
      

      此更改相对而言更为复杂,因为我已考虑使其能够在未来得到 RTL 翻译支持。
      后来在usage_with_options_internal() 我们有一些现有的填充代码可以追溯到d7a38c5 ("parse-options: 能够自动生成用法", 2007-10-15, Git v1.5.4-rc0 -- merge) 其中不是 RTL 安全的,但该代码很容易修复。
      这里就不介绍新的 RTL 翻译问题了。


      原始答案(2014 年)

      不,尽管“how do I get git to show command-line help in windows?”中建议了基于 htlp txt 文件的“猫”的替代方案。

      man.&lt;tool&gt;.cmd config 于 2008 年推出,允许设置自定义命令,但 msys shell 未附带man.exe

      【讨论】:

      • 在 Git 2.13.1 中不仅没有 man.exe,而且手册页也没有。
      【解决方案4】:

      世界上针对此问题设计最过度的解决方法:使用 WSL

      (也就是说,除非您已经是 WSL 用户,在这种情况下,这只是一种普通的解决方法)

      1. 通过 Windows 应用商店安装一个 linux 发行版
      2. 进入并确保已安装 git 包
      3. 从 Windows 命令行,bash -c 'git help fetch'

      这是最后一个的别名:

      [alias]
          hep = "!f() { $SYSTEMROOT/System32/bash -c \"git help $1\"; }; f"
      

      (不,你不能override git built-ins,但你可以制作一个shell命令来拦截和重新路由help。)

      【讨论】:

        猜你喜欢
        • 2011-07-27
        • 1970-01-01
        • 2015-06-18
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 2011-07-08
        • 1970-01-01
        相关资源
        最近更新 更多