gitエイリアスシェルコマンドエラー

gitエイリアスシェルコマンドエラー

私はcygwinでbashバージョン4.1.2(1)-リリース(x86_64-redhat-linux-gnu)とgit 1.7.1を使用しています。入力パラメータが2回必要なコマンドのエイリアスを作成したいと思います。次のようなこのガイドライン、私が書いた

[alias]
branch-excise = !sh -c 'git branch -D $1; git push origin --delete $1' --

次のエラーが発生します。

$> git branch-excise my-branch
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file

最後にaとaを試しましたが、-同じエラーが発生しました。--この問題をどのように解決できますか?

ベストアンサー1

man git-config説明する:

構文は非常に柔軟で緩いです。スペースはほとんど無視されます。 #と;文字はコメントから行末まで表示され、空白行は無視されます。

だから:

branch-excise = !bash -c 'git branch -D $1; git push origin --delete $1'

以下と同じ:

#!/usr/bin/env bash

bash -c 'git branch -D $1

上記のスクリプトを実行すると、次のものが印刷されます。

/tmp/quote.sh: line 3: unexpected EOF while looking for matching `''
/tmp/quote.sh: line 4: syntax error: unexpected end of file

1つの解決策は、コマンド全体を次の場所に配置することです"

branch-excise = !"bash -c 'git branch -D $1; git push origin --delete $1'"

$1しかし、空であるため、まだ動作しません。

$ git branch-excise master
fatal: branch name required
fatal: --delete doesn't make sense without any refs

機能させるには、ダミー関数を作成し、.gitconfig次のように呼び出す必要があります。

branch-excise = ! "ddd () { git branch -D $1; git push origin --delete $1; }; ddd"

使用法:

$ git branch-excise  master
error: Cannot delete the branch 'master' which you are currently on.
(...)

おすすめ記事