Gitコマンドにデフォルトでフラグを設定する方法があるかどうか知りたいです。具体的には、--abbrev-commit
を実行するときにgit log
を実行するように、git log --abbrev-commit
フラグを設定します。
質問 " gitコマンドのデフォルトでフラグを設定する方法はありますか? "とは異なり、-abbrev-commitをgitログに追加するための構成フラグは明らかにありません。さらに、gitマニュアルには、エイリアスを作成できないと記載されています。 「スクリプトの使用に関する混乱とトラブルを避けるため、既存のgitコマンドを隠すエイリアスは無視されます」
3番目のオプションは、.gitconfigファイルにglog=log --abbrev-commit
などの新しいエイリアスを作成することです。ただし、新しいコマンドを使用して独自のDSLを発明することは避けたいです。
abbrev-commit
フラグがデフォルトで設定されるようにする別の方法はありますか??
Gitバージョン1.7.6以降、git configはtrueに設定できるlog.abbrevCommitオプションを取得しました。したがって、答えは少なくとも1.7.6にアップグレードすることで(この記事の執筆時点では1.7.11.4であり)、以下を使用します。
git config --global log.abbrevCommit true
カスタム形式を使用して、git log
模倣--abbrev-commit
デフォルトでは:
git config format.pretty "format:%h %s"
Gitには、コマンドのデフォルト引数を設定する一般的なメカニズムはありません。
git aliases を使用して、必要な引数を使用して新しいコマンドを定義できます。
git config alias.lg "log --oneline"
その後、git lg
を実行できます。
一部のコマンドには、動作を変更する構成設定もあります。
VonCは、彼の答えで既にシェルラッパーを示唆しています。このようなラッパーのBash実装を次に示します。これを入れると.bashrc
に追加すると、インタラクティブシェルはGit組み込みコマンドと大文字のエイリアスのオーバーライドをサポートします。
# Git supports aliases defined in .gitconfig, but you cannot override Git
# builtins (e.g. "git log") by putting an executable "git-log" somewhere in the
# PATH. Also, git aliases are case-insensitive, but case can be useful to create
# a negated command (gf = grep --files-with-matches; gF = grep
# --files-without-match). As a workaround, translate "X" to "-x".
git()
{
typeset -r gitAlias="git-$1"
if 'which' "$gitAlias" >/dev/null 2>&1; then
shift
"$gitAlias" "$@"
Elif [[ "$1" =~ [A-Z] ]]; then
# Translate "X" to "-x" to enable aliases with uppercase letters.
translatedAlias=$(echo "$1" | sed -e 's/[A-Z]/-\l\0/g')
shift
"$(which git)" "$translatedAlias" "$@"
else
"$(which git)" "$@"
fi
}
git log
という名前のスクリプトをPATHのどこかに置くことで、git-log
をオーバーライドできます。
#!/bin/sh
git log --abbrev-commit "$@"
同様の問題があります(Gitコマンドのデフォルトオプションの多くはダムです)。これが私のアプローチです。次のように、パス上に「grit」(または何でも)というスクリプトを作成します。
#!/bin/bash
cmd=$1
shift 1
if [ "$cmd" = "" ]; then
git
Elif [ $cmd = "log" ]; then
git log --abbrev-commit $@
Elif [ $cmd = "branch" ]; then
git branch -v $@
Elif [ $cmd = "remote" ]; then
git remote -v $@
else
git $cmd $@
fi
Bashの非専門家と共有する必要がある場合に備えて、読みやすく保守しやすい。
開発者にパスに追加するディレクトリを提供するために、使用するすべてのユーティリティ(svn、maven、git、...)は常に.bat(Windowsの場合、またはUnixの.sh)にカプセル化されます。
Gitがラッパースクリプトにカプセル化されている場合、...すべてが可能です。
しかし、それはユーザーのセットアップにリンクされたソリューションであり、Git自体やgitリポジトリにリンクされたものではありません。
私は好き git log --oneline
フォーマット。デフォルトとして取得するには、使用します
git config --global format.pretty oneline
クレジット: https://willi.am/blog/2015/02/19/customize-your-git-log-format/