Git 别名以创建别名

Git 别名以创建别名,git,alias,Git,Alias,如何编写git别名以创建更多别名 例如: git alias st status 应该在st下为git status创建一个新别名,您可以编写一个名为git createalias的脚本,它将按照您的预期工作,例如git createalias。将其设置为bash命令或使用您最喜欢的脚本语言。使用它可以直接从命令行为您创建新别名 例如,创建一个bash(或其他编程语言),将其命名为git newalias,并让它接受任何参数。让它将所需的格式写入.gitconfig,然后下一个git命令将读取

如何编写git别名以创建更多别名

例如:

git alias st status

应该在
st
下为
git status
创建一个新别名,您可以编写一个名为
git createalias
的脚本,它将按照您的预期工作,例如
git createalias
。将其设置为bash命令或使用您最喜欢的脚本语言。使用它可以直接从命令行为您创建新别名

例如,创建一个bash(或其他编程语言),将其命名为
git newalias
,并让它接受任何参数。让它将所需的格式写入
.gitconfig
,然后下一个git命令将读取该文件,您就有了所需的解决方案。正如@torek更全面地解释的那样,您可以这样做,但我仍然建议您只编写一个git命令作为脚本(shell)程序,并根据需要使用它

<>它们是不同的,但是考虑你可以通过脚本来实现功能(当然,使用BASH或你喜欢的语言)。Git本身是一个独立文件的集合,看起来像是在执行命令,例如Git commit,实际上是Git commit。例如,在一个通用linux发行版上,请参见
ls/usr/lib/git核心。这也详细说明了这一点。这方面的一个例子是该文件夹中的git stash shell脚本


当我只为我的帐户需要的东西执行此操作时,我会将它们放在git配置文件的
~/bin
chmod+x
中,每个别名都只是git配置文件的
别名
部分的一个条目。例如,如果
zog
是一个别名,那么它将是
alias.zog

要更新git配置文件,可以使用
git config
和其中一个选项来选择要更新的配置文件。最合适的此类选项是
--global
(影响应用于所有存储库的个人配置文件)和
--local
(仅影响当前存储库,即仅在一个repo中工作的别名)。默认值是
--local
,但是
--global
通常对别名更有意义

>让我们考虑一个简单的例子,使<代码> git Zog 意思与<代码> Git日志 >:

$ git config --global alias.zog log
$ git zog --oneline
a17003a change f1
9af3861 initial
$ git config --global alias.zog frog
$ git zog
Expansion of alias 'zog' failed; 'frog' is not a git command
现在让我们将其从含义
log
更改为含义
frog

$ git config --global alias.zog log
$ git zog --oneline
a17003a change f1
9af3861 initial
$ git config --global alias.zog frog
$ git zog
Expansion of alias 'zog' failed; 'frog' is not a git command
最后,我们将删除它,因为这只是为了说明,现在是清理的时候了:

$ git config --global --unset alias.zog
$ git zog
git: 'zog' is not a git command. See 'git --help'.

Did you mean this?
    log
您说您想要一个可以创建更多别名的别名。这意味着我们希望别名
alias
运行
git config
。这几乎是可行的:

git config --global alias.alias 'config --global alias.'
除了一个非常大的问题:使用此别名,运行
git alias st status
会产生与以下命令等效的结果:

git config --global alias. st status
当我们希望将
alias.st
作为第一个参数时。此外,如果存在多个参数,我们会遇到剩余参数的问题:
git config
会使它们不适当地分开

因此,我们需要求助于调用shell。有许多方法可以对其余部分进行编码。它们很难作为shell命令输入;编辑配置文件并手动将其放入更容易(
git config--global--edit
将完成此操作,或者您可以直接调用编辑器)

下面是git作者的一个示例(我添加了一些反斜杠换行位,使其更适合StackOverflow;请注意,您可以在各种配置文件中以这种方式编写别名):

所以现在:

$ git alias st status --short
$ GIT_TRACE=1 git st
trace: exec: 'git-st'
trace: run_command: 'git-st'
trace: alias expansion: st => 'status' '--short'
trace: built-in: git 'status' '--short'
(或者只需查看配置文件,使用编辑器或
git-config--get

这两个版本仍然有一些缺陷,因为它们可以尝试重新为现有别名添加别名。最好是查看配置文件中是否已存在
别名“$1”
,如果已存在,请投诉(或要求使用类似
--overwrite
的参数或类似于
realias
的其他别名或类似参数)。您可以自由体验git对多个条目所做的操作,例如,
alias.foo
,并查看文档,了解
git config
如何处理多个条目(在各种情况下都允许)


一般来说,一旦你的git别名开始变得像这样毛茸茸的,可能最好只为它编写一个shell脚本(或shell函数)。

shell别名和git别名略有不同,我相信它问的是后者(很可能是第一个实现的)。@Leigh你可能是对的,但我建议不要这样做是为了理智。作为一个练习,这是因为torek展示了一个有价值的教训。但这样做更难。