1

私はカスタム git エイリアスをセットアップして、このようなきれいな git ログを作成しました~/.gitconfig

[alias]
   l = "!source ~/.githelpers && git_pretty_log"

私の~/.githelpersファイルには以下が含まれています:

#!/bin/bash

HASH="%C(yellow)%h%C(reset)"
RELATIVE_TIME="%C(green)%ar%C(reset)"
AUTHOR="%C(bold blue)%an%C(reset)"
REFS="%C(red)%d%C(reset)"
SUBJECT="%s"

FORMAT="$HASH{$RELATIVE_TIME{$AUTHOR{$REFS $SUBJECT"

function git_pretty_log() {
    git log --graph --pretty="tformat:$FORMAT" $* |
    column -t -s '{' |
    less -FXRS
}

しかし、私git lが持っているレポで行うと、次のようになります。

$ git l
source ~/.githelpers && git_pretty_log: 1: source ~/.githelpers && git_pretty_log: source: not found
fatal: While expanding alias 'l': 'source ~/.githelpers && git_pretty_log': Aucun fichier ou dossier de ce type

何か案は?

4

2 に答える 2

3

エラーはsource、外部バイナリではなく、bash ビルトインのようです。

$ git config alias.foo '!source .gitfoo'
$ git foo
source .gitfoo: 1: source .gitfoo: source: not found

これらすべてを a でラップするとbash -c、問題が解決します。

$ git config alias.foo '!'"bash -c 'source .gitfoo && gitfoobar'"
$ echo 'function gitfoobar() { echo foo bar; }' >.gitfoo
$ git foo
foo bar

あなたの場合:

git config --global alias.l '!'"bash -c 'source ~/.githelpers && git_pretty_log'"
于 2013-09-30T19:20:44.603 に答える
-1

引用符を削除します。それはちょうどあるべきです:

[alias]
    l = !source ~/.githelpers && git_pretty_log

それ以外の場合は、エラー メッセージに示されているように、存在しない長いコマンドを 1 つ実行しようとしています。

于 2013-09-30T19:17:01.317 に答える