2

我的 .bash_profile 中已经设置了一堆 git 别名,它们可以正常工作:

alias gst="git status"
alias gl="git pull"
alias gp="git push"
alias gd="git diff | mate"
alias gc="git commit -v"
alias gca="git commit -v -a"
alias gb="git branch"
alias gba="git branch -a"

我正在尝试为以下命令添加别名,但一直遇到错误:

git log --all --pretty=format:'%h %cd %s (%an)' --since='7 days ago'

我想做的是能够输入:

glog 'some amount of time'

因此,作为别名和 git 的新手,我认为这会起作用:

alias glog="git log --all --pretty=format:'%h %cd %s (%an)' --since="

它抛出以下错误:

fatal: ambiguous argument '7 days ago': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

如何更正我的别名以使其正常工作?

谢谢!

[编辑]

如果我将别名更改为:

alias glog="git log --all --pretty=format:'%h %cd %s (%an)'"

然后只需输入:

glog --since='some amount of time'

但如果可能的话,我真的很想输入时间。

4

1 回答 1

8

相反,您可以在.bash_profile. 它将允许您使用变量:

glog ()
{
        git log --all --pretty=format:'%h %cd %s (%an)' --since="$1"
}

并像往常一样调用它:

glog "7 days ago"

快速跟进:我将如何更改函数以允许还附加 --author="so-and-so" 标志的可能性?例如,我可以输入 glog "7 天前" 或 blog "7 天前" --author="bob"

我会这样做:

glog ()
{
    if [ -z "$2" ]; then
       git log --all --pretty=format:'%h %cd %s (%an)' --since="$1"
    else
       git log --all --pretty=format:'%h %cd %s (%an)' --since="$1" --author="$2"
    fi
}

所以你可以用

glog "7 days ago"
glog "7 days ago" "bob"

请注意,if [ -z "$2" ]; then条件是检查第二个参数是否为空。如果是这样,只需执行不带author. 否则,它会使用它。

于 2013-09-18T14:45:00.173 回答