Bash 如何使用分支名称的字符串格式来别名git checkout-b

Bash 如何使用分支名称的字符串格式来别名git checkout-b,bash,git,Bash,Git,我的团队为我们的分支机构名称使用一种统一的格式。对于给定的分支机构,格式为:“功能/团队名称卡号”。卡号是其中唯一会更改的部分,因此我想创建一个别名,例如: git cobf '111' 其中111是卡号 我尝试使用此命令设置别名: git config --global alias.cobf 'checkout -b feature/TeamName-" 但是,当运行git cobf 111命令时,我收到一个错误,说明111不是提交,无法从中创建分支。为什么失败? 这是因为在扩展

我的团队为我们的分支机构名称使用一种统一的格式。对于给定的分支机构,格式为:“功能/团队名称卡号”。卡号是其中唯一会更改的部分,因此我想创建一个别名,例如:

git cobf '111'
其中111是卡号

我尝试使用此命令设置别名:

git config --global alias.cobf 'checkout -b feature/TeamName-"

但是,当运行git cobf 111命令时,我收到一个错误,说明111不是提交,无法从中创建分支。

为什么失败?

这是因为在扩展别名后,您的命令解析为

git checkout -b feature/TeamName- 111
…对git来说,这意味着“签出一个名为
feature/TeamName-
指向committesh
111
”的新分支”(粗略地说,“committesh”是指提交或指向一个分支的东西,如分支或标记)


该怎么办?

为了避免这种情况,请使用ad-hoc bash函数更方便地处理参数:

git config --global alias.cobf '!f() { git checkout -b feature/TeamName-$1; }; f'

注意:调用别名时不需要引号,
git cobf 111
就可以了。

这太完美了,谢谢!