我使用此命令导出指定commit(s)
中的所有文件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'
有人可以帮我吗?
由于
答案 0 :(得分:1)
别名通常不采用位置参数。更好的方法是编写一个简短的脚本 - 假设您要使用您提到的语法(git he 1.zip COMMIT1 COMMIT2
),将脚本命名为git-he
并将其放在路径中的某个位置(例如{{ 1}}如果您是唯一的预期用户,或${HOME}/bin
以获得更广泛的可访问性):
/usr/local/bin
对于无法识别的子命令,#!/bin/sh
git archive --output="$1" --format=zip HEAD $(git diff --name-only "$2" "$3")
将在您的路径中搜索名为git
的脚本。最好对参数进行一些健全性检查,并确保git-<command>
。
答案 1 :(得分:0)
我建议使用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
。但这应该会给你一个想法。
答案 2 :(得分:0)
将命令本身的双引号更改为单引号,如下所示:
git config --global alias.he "archive --output='$1' --format=zip HEAD \$(git diff --name-only '$2' '$3')
无需在双引号内转义单引号。
答案 3 :(得分: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
当你想要添加或删除别名时,只需编辑它。