如何创建此git别名?

如何创建此git别名?,git,alias,Git,Alias,我使用此命令导出指定提交中的所有文件 我想做一个别名,这样我就不需要每次都键入这个长命令 我试过: 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' 有人能帮我吗 谢谢我建

我使用此命令导出指定提交中的所有文件

我想做一个别名,这样我就不需要每次都键入这个长命令

我试过:

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'
有人能帮我吗


谢谢

我建议为此使用shell别名。我在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
。但是这会给你一个主意。

将命令本身的双引号改为单引号,如下所示:

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

无需在双引号中转义单引号。

只需打开终端并键入

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
[别名]
ci=提交
cm=提交-am
br=分支
newbr=签出-b
delbr=分支-d
showbr=在'git branch | sed s/^../`中表示k;do echo-e`git log-1--pretty=格式:“%Cgreen%ci%Cblue%cr%Creset”“$k”-\\t“$k”;完成|排序
co=结帐
df=diff
dfc=差异——分阶段
更改=差异--名称状态-r
diffstat=diff--stat-r

lg=log--graph--oneline--pretty=format:“%Cred%h%Creset-%C(黄色)%s%Creset%C(绿色)别名通常不采用位置参数。更好的方法是编写一个简短的脚本——假设您想使用您提到的语法(
git-he 1.zip-COMMIT1-COMMIT2
),将脚本命名为
git-he
,并将其放在路径中的某个位置(例如,如果您是唯一的预期用户,请将其命名为
${HOME}/bin
,或者
/usr/local bin
,以便更广泛地访问):


对于无法识别的子命令,
git
将在路径中搜索名为
git-
的脚本。最好对中的参数进行一些健全性检查,并确保
chmod+x//git he

我建议不要这样做。git-st-etc相当标准
[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
#!/bin/sh
git archive --output="$1" --format=zip HEAD $(git diff --name-only "$2" "$3")