Git 在bash中创建多单词别名?

Git 在bash中创建多单词别名?,git,bash,Git,Bash,我想在bash中创建一个别名,这样 git diff somefile 变成 git diff --color somefile 但我不想像这样定义自己的自定义别名 alias gitd = "git diff --color" 因为如果我习惯了这些自定义别名,那么我就失去了在没有这些映射的机器上工作的能力 编辑:bash似乎不允许使用多词别名。除了创建别名之外,还有其他解决方案吗?请避免在bash中的分配登录处出现空格: alias gitd="git diff --color" 要为

我想在bash中创建一个别名,这样

git diff somefile
变成

git diff --color somefile
但我不想像这样定义自己的自定义别名

alias gitd = "git diff --color"
因为如果我习惯了这些自定义别名,那么我就失去了在没有这些映射的机器上工作的能力


编辑:bash似乎不允许使用多词别名。除了创建别名之外,还有其他解决方案吗?

请避免在bash中的分配登录处出现空格:

alias gitd="git diff --color"

要为命令创建更智能的别名,您必须编写一个与该命令同名的包装函数,该函数分析参数、转换参数,然后使用转换后的参数调用实际命令

例如,
git
函数可以识别正在调用
diff
,并在那里插入
--color
参数

代码:


如果您想在
diff
之前支持任何选项,并且仍然让它添加
--color
,显然,您必须使此解析更智能。

您找错了方向。将
color.diff
config选项设置为
auto

更好的答案(对于这种特定情况)

git config
手册页:

   color.diff
       When set to always, always use colors in patch. When false (or
       never), never. When set to true or auto, use colors only when the
       output is to the terminal. Defaults to false.

不需要函数或别名。但是函数包装器方法对于任何命令都是通用的;把那张卡插在袖子里。

Git有自己的方法来指定别名()。例如:

git config --global alias.d 'diff --color'

然后你可以使用git d

我认为这是不可能的…再次感谢你指出这一点。我喜欢你的两个答案。但这一个是非常具体的我的用例。因此,选择此作为接受的答案。您可能希望使用
命令git
而不是硬编码路径。我知道有一种方法可以引用原始的外部命令,但就我而言,我记不得了。:)
git config --global alias.d 'diff --color'