我正在尝试为一个更简单的存储区别名,所以我可以做git load <stashname>
,就像这一行:
load = !git stash list | grep ' $1$' | awk '{ print $1 }' | sed '$ s/:$//'; echo
不幸的是,awk的$1
也被隐藏名称所取代。我怎么能逃脱这个$符号?试过\$
,但是git说:
fatal: bad config file line 33 in /home/alvaro/.gitconfig
答案 0 :(得分:1)
$ 1的替换都没有被替换。它们被单引号包围。该行末尾的; echo
只是一个评论。所以它并没有真正做任何事情。如果你想让它成为别名的一部分,你需要用双引号括起整个事物。
<stashname>
被添加到行的末尾(我假设这是echo
的用途?)您建议的命令似乎想要回显stash@{n}
之类的内容给出藏匿的名称。下面的别名会这样做。 (虽然它不是很有用)
[alias]
load = "!git stash list | grep \" $1$\" | awk '{ print $1 }' | sed '$ s/:$//' #"
$ 1的第一次出现被参数替换,因为它只被双引号括起来;我们需要逃脱。 awk的1美元不会被<stashname>
替换。除了git已经允许你申请,按名称弹出窗口。
$ git stash list # produces no output
$ echo "something" > else.txt
$ git stash something
Saved working directory and index state On master: something
HEAD is now at 6d3fcf0 merged
$ git load something
stash@{0}
也许以这种方式看待它更容易
[alias]
test = "! echo $1 '$2' \"$3\" end; # "
结果
$ git test first second third
first $2 third end