我的.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'
但如果可能的话,我真的只想输入时间。
答案 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
的代码。否则,它会使用它。