使用格式创建“git log”别名

时间:2013-09-18 14:41:01

标签: git bash terminal alias .bash-profile

我的.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'

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

1 个答案:

答案 0 :(得分:7)

相反,您可以在.bash_profile中创建一个功能。它允许您使用变量:

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

并像往常一样打电话:

glog "7 days ago"

  

快速跟进:如何更改功能以允许   是否还可以追加--author =“某某某”的旗帜?就像我一样   可以输入glog“7天前”或博客“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的代码。否则,它会使用它。