1

我有一个应该做的 git 别名git checkout -b <branchname>(基本上是创建分支并检查它)。我的别名如下所示:

newbranch = !sh -c 'git checkout -b "$1"'

但是当我尝试时,git newbranch mytestbbranch我得到一个错误,说“b”开关需要一个参数。

我有一个类似的重命名别名,如下所示:

rename = !sh -c 'git branch -m "$1" "$2"'

而那个工作得很好。我很困惑为什么newbranch别名不起作用。

4

1 回答 1

2

当您使用别名时

!sh -c 'git checkout -b "$1"'

你应该需要一个结束破折号-

!sh -c 'git checkout -b "$1"' -

我不明白为什么您的其他别名有效。

根据来自 Linux Kernel Git wiki 的带有参数的高级别名

从 1.5.3 版本开始,git 也支持将参数附加到以“!”为前缀的命令中。如果您需要执行重新排序,或者两次使用参数,您可以使用这个技巧:

 [alias]
      example = !sh -c 'ls $2 $1' -

最后的破折号是参数以 $1 开头,而不是 $0。

也可以看看:

  1. 带有位置参数的 git 别名 (git foo aaa bbb ccc => foo aaa && bar bbb && baz ccc)
  2. 将参数传递给 Git 别名命令
于 2013-08-21T00:55:42.877 回答