我试图制作一个git别名,以显示自上一个标记以来的所有提交。我是基于这个,所以回答说,我在过去使用过很多。
目前,我正在使用类似于这样的git config --global alias.*命令尝试这样的方法:
git config --global alias.summary 'log `git describe --tags --abbrev=0`..HEAD --oneline'这将注册一个名为“汇总”的新“命令”,该命令将呈现自最后一个标记以来的所有提交消息。
但是,当我运行git summary时,git会抛出以下错误消息:
致命的:模糊的论点'`git':未知的修改或路径不在工作树中。 使用“--”将路径与修订分开,如下所示: ‘'git .-.’
在我看来,这看起来像是嵌套在后台的内部命令git describe --tags --abbrev=0没有正确计算。
我怎么才能解决这个问题?
发布于 2016-02-17 23:40:09
我已经知道,您需要使用bang/!操作符来标记git,别名应该在shell中执行。
在另一个注意事项上,将git describe --tags --abbrev=0替换为$(git describe --tags --abbrev=0),会导致命令在放入配置文件的别名部分之前执行。这将导致一个别名命令,将最新的标记版本放入别名中,而不是动态地查找最新的git标记。
IE:如果存储库有标记1.1.0和2.0.0,并且我尝试从2.0.0添加几个提交的别名,它将生成以下别名命令:
'!git log 2.0.0..HEAD --oneline;'这意味着2.0.0现在被固定为要检查的标记,而不是动态地为所讨论的存储库查找最新的标记。
因此,要修复我的初始git别名,我需要将!git添加到别名命令的开头:
git config --global alias.summary '!git log `git describe --tags --abbrev=0`..HEAD --oneline;'发布于 2016-02-17 22:14:00
编辑:我最初的建议仍然有效,但是也要看看这个:Git alias with shell variable expansions
我建议将其创建为bash函数。我不认为Git将正确地解析这一点,其净效果将是一样的。您可以将其添加到~/.bashrc,以便在shell启动时自动配置它。
gitsummary() {
git log `git describe --tags --abbrev=0`..HEAD --oneline
}您可以像执行标准应用程序一样执行bash函数,如下所示
cd /my/git/dir
gitsummaryhttps://stackoverflow.com/questions/35467608
复制相似问题