2

このコマンドを使用して、指定したコミットですべてのファイルをエクスポートします

git archive --output=export.zip --format=zip HEAD $(git diff --name-only COMMIT1 COMMIT2)

エイリアスを作成したいので、この長いコマンドを毎回入力する必要はありません。

私は試した:

git config --global alias.he "archive --output=\"$1\" --format=zip HEAD \$(git diff --name-only \"$2\" \"$3\")

ただし、実行するgit he 1.zip COMMIT1 COMMIT2とプロンプトが表示されます

error: unknown option `name-only'

誰でもこれを手伝ってもらえますか?

ありがとう

4

4 に答える 4

1

通常、エイリアスは位置パラメータを取りません。git he 1.zip COMMIT1 COMMIT2これを行うためのより良い方法は、短いスクリプトを作成することです- あなたが言及した構文を使用したいと仮定してgit-he( ):${HOME}/bin/usr/local/bin

#!/bin/sh
git archive --output="$1" --format=zip HEAD $(git diff --name-only "$2" "$3")

認識できないサブコマンドについてはgit、パスで という名前のスクリプトを検索しますgit-<command>。の引数に健全性チェックを入れて、chmod +x <path>/<to>/git-he.

于 2012-10-19T14:26:16.147 に答える
0

次のように、コマンド自体の二重引用符を一重引用符に変更します。

git config --global alias.he "archive --output='$1' --format=zip HEAD \$(git diff --name-only '$2' '$3')

二重引用符内の単一引用符をエスケープする必要はありません。

于 2012-08-23T05:56:27.517 に答える
0

端末を開いて入力するだけです

pico ~/.gitconfig

これを資格情報の下に貼り付けます

[alias]
    ci = commit
    cm = commit -am
    br = branch
    newbr = checkout -b
    delbr = branch -d
    showbr = for k in `git branch|sed s/^..//`;do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" "$k" --`\\t"$k";done|sort
    co = checkout
    df = diff
    dfc = diff --staged
    changes=diff --name-status -r
    diffstat=diff --stat -r
    lg = log --graph --oneline --pretty=format:'%Cred%h%Creset - %C(yellow)%s%Creset %C(green)<%an<%Creset' --abbrev-commit
    new = !sh -c 'git log $1@{1}..$1@{0} "$@"'
    llog = log --date=local
    fork = remote add -f

エイリアスを追加または削除したいときはいつでも、これを編集してください。

于 2012-10-19T14:08:41.730 に答える
0

これにはシェルエイリアスを使用することをお勧めします。私の bash プロファイルには、いくつかのエイリアスが定義されています。

alias gs='git status '
alias ga='git add '
alias gb='git branch '
alias gc='git commit'
alias gd='git diff'
alias go='git checkout '

私はほとんどの場合、gsの代わりに使用しgit statusます。しかし、それはあなたにアイデアを与えるはずです。

于 2012-06-22T00:45:47.703 に答える