【发布时间】:2023-01-11 03:16:20
【问题描述】:
我基本上想阻止我的电脑在我的终端上运行这个命令:
git checkout master
我的第一个想法是添加一个别名,但别名不会只抓取整个命令的第一部分。
基本上,如果我运行命令,我想回显一条消息,没什么特别的。
所以我想知道这样做的最佳方法是什么?
【问题讨论】:
-
您可能想查看有关隐藏内置命令的 Git 别名的问题。然后你可以将
checkout定义为别名,它首先检查被检出的分支是否是master,如果不是,则只运行“真实的”git commit命令。 -
或者,您可以简单地用标签替换分支负责人。不过,这听起来像是一个 XY 问题:为什么要阻止检出任何特定分支,更不用说
master了? -
就
zsh而言,命令是git;其余的只是争论。您可以定义一个隐藏git的 shell 函数,并在继续执行常规git命令或做一些不同的事情之前检查其参数,但这可能需要基本上复制git的参数解析。 -
是的,这或多或少是我在想的,但我不确定如何继续编写一个检查参数的函数。我认为有某种方法可以像钩子一样检查所有传入的命令,如果其中任何命令是“git checkout master”,则回显其他内容。我只是不确定如何进行。我不想允许检出 master 的原因是因为我无权删除该分支并且在我应该检出开发分支时我一直在检出它。
-
您可以定义一个
preexec挂钩,但它只会将git checkout master作为参数,让您将命令行拆分为单独的参数,然后执行与函数相同的逻辑命名为git(除了该函数已经将checkout和master作为单独的参数)。
标签: git terminal zsh oh-my-zsh