新版本的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而无需额外修改
答案 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或更高版本才能使它们工作。