17

bashでエイリアスを作成したいので、

git diff somefile

になります

git diff --color somefile

しかし、私は自分のカスタムエイリアスを次のように定義したくありません

alias gitd = "git diff --color"

これらのカスタムエイリアスに慣れると、これらのマッピングがないマシンで作業する機能が失われるためです。

編集:bashはマルチワードエイリアスを許可していないようです。エイリアスの作成以外に、これに対する他の代替ソリューションはありますか?

4

5 に答える 5

32

コマンドのよりスマートなエイリアスを作成するには、そのコマンドと同じ名前のラッパー関数を作成する必要があります。このラッパー関数は、引数を分析して変換し、変換された引数を使用して実際のコマンドを呼び出します。

たとえば、git関数はそれが呼び出されていることを認識し、そこに引数diffを挿入できます。--color

コード:

# in your ~/.bash_profile

git()
{
  if [ $# -gt 0 ] && [ "$1" == "diff" ] ; then
     shift
     command git diff --color "$@"
  else
     command git "$@"
  fi
}

以前にオプションをサポートしdiff、それでも追加--colorしたい場合は、明らかに、この解析をよりスマートにする必要があります。

于 2012-04-16T06:56:18.690 に答える
8

より良い答え(この特定の場合)。

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.

関数やエイリアスは必要ありません。ただし、関数ラッパーアプローチは、どのコマンドでも一般的です。そのカードを袖に貼り付けます。

于 2012-04-16T07:10:01.707 に答える
6

Gitには、エイリアスを指定する独自の方法があります(http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases)。例えば:

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

次に、を使用できますgit d

于 2013-10-02T21:15:58.263 に答える
2

bashでの割り当てサインインの前後の空白は避けてください。

alias gitd="git diff --color"
于 2012-04-16T06:44:16.323 に答える
1

あなたは間違った木を吠えています。color.diffconfigオプションをに設定しますauto

于 2012-04-16T06:59:53.863 に答える