我可以禁用特定的git命令吗?

时间:2018-06-12 10:07:41

标签: bash git tab-completion bash-completion

新版本的git已经添加了我可能永远不会使用的新命令 有没有办法可以禁用这些命令,以便我的标签完成更快? 对于例如:之前,from pyspark.sql.functions import udf import json @udf("struct<type: string, coordinates: struct<polygon: array<array<struct<lon: double, lat: double>>>, line: array<struct<lon: double, lat: double>>, point: struct<lon: double, lat: double>>>") def parse(row): try: struct = json.loads(row["coordinates"]) t = row["type"] except (TypeError, json.decoder.JSONDecodeError): pass if t == "Polygon": return t, (struct, None, None) elif t == "LineString": return t, (None, struct, None) elif t == "Point": return t, (None, None, struct) sdf.select(parse("geometry")).show(truncate=False) # +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ # |parse(geometry) | # +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ # |[Polygon, [[[[-0.144195556640625, 52.019120643633386], [-0.127716064453125, 52.00052411347729], [-0.10848999023437499, 52.01193653675363], [-0.12359619140625, 52.02883848153626], [-0.144195556640625, 52.019120643633386]]],,]]| # |[LineString, [, [[-0.196380615234375, 52.11283076186275], [-0.1263427734375, 52.07739600418385]],]] | # |[Point, [,, [-0.1641082763671875, 52.06051241654061]]] | # +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 会自动完成git check<tab> 但由于新版git版本中存在git checkout,因此git check<tab>标签未完成。

这只是其中一个例子。

如果我可以强迫&#34;强迫&#34; git to tab-complete&#34; check&#34;到git check-mailmap

编辑:我使用vanilla bash而无需额外修改

2 个答案:

答案 0 :(得分:3)

这似乎是完成文件:git-completion.bash

以下是有关如何使用它的说明:Git Basics, Tips, and Tricks: Auto-Completion

各种命令的部分内容如下:

_git_apply ()
{
    case "$cur" in
    --whitespace=*)
        __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
        return
        ;;
    --*)
        __gitcomp_builtin apply
        return
    esac
}

我认为在该文件中,您可以删除(或注释掉)您不希望在自动完成中看到的命令。

另一种方法是使用git别名来创建常用命令的更短替代方法。例如:

git config --global alias.co checkout

现在您可以输入git co来检出文件。

答案 1 :(得分:3)

官方方法是使用配置completion.commands并删除不需要的配置:

git config --global completion.commands -check-mailmap

但是,您可以做更多的事情。 __git_main()中有一个用于测试的骇客,您可以滥用它来做自己想做的事:

GIT_TESTING_PORCELAIN_COMMAND_LIST="$(git --list-cmds=list-mainporcelain,alias)"

这将强制Git的完成仅显示主要命令(和别名)。

您需要Git v2.18或更高版本才能使它们工作。