首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套回拨在git命令别名中。

问嵌套回拨在git命令别名中。
EN

Stack Overflow用户
提问于 2016-02-17 20:58:28
回答 2查看 436关注 0票数 1

我试图制作一个git别名,以显示自上一个标记以来的所有提交。我是基于这个,所以回答说,我在过去使用过很多。

目前,我正在使用类似于这样的git config --global alias.*命令尝试这样的方法:

代码语言:javascript
复制
git config --global alias.summary 'log `git describe --tags --abbrev=0`..HEAD --oneline'

这将注册一个名为“汇总”的新“命令”,该命令将呈现自最后一个标记以来的所有提交消息。

但是,当我运行git summary时,git会抛出以下错误消息:

致命的:模糊的论点'`git':未知的修改或路径不在工作树中。 使用“--”将路径与修订分开,如下所示: ‘'git .-.’

在我看来,这看起来像是嵌套在后台的内部命令git describe --tags --abbrev=0没有正确计算。

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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添加几个提交的别名,它将生成以下别名命令:

代码语言:javascript
复制
'!git log 2.0.0..HEAD --oneline;'

这意味着2.0.0现在被固定为要检查的标记,而不是动态地为所讨论的存储库查找最新的标记。

因此,要修复我的初始git别名,我需要将!git添加到别名命令的开头:

代码语言:javascript
复制
git config --global alias.summary '!git log `git describe --tags --abbrev=0`..HEAD --oneline;'
票数 1
EN

Stack Overflow用户

发布于 2016-02-17 22:14:00

编辑:我最初的建议仍然有效,但是也要看看这个:Git alias with shell variable expansions

我建议将其创建为bash函数。我不认为Git将正确地解析这一点,其净效果将是一样的。您可以将其添加到~/.bashrc,以便在shell启动时自动配置它。

代码语言:javascript
复制
gitsummary() {
    git log `git describe --tags --abbrev=0`..HEAD --oneline
}

您可以像执行标准应用程序一样执行bash函数,如下所示

代码语言:javascript
复制
cd /my/git/dir
gitsummary
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35467608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档