2

我试图给一个更简单的存储起别名,这样我就可以做到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
4

1 回答 1

1

$1 的出现都没有被替换。它们被单引号包围。行; echo尾的只是一个注释。所以它并没有真正做任何事情。如果您希望它成为别名的一部分,则需要用双引号将整个内容括起来。

<stashname>添加到行尾(我假设这就是它的echo用途?)您提出的命令似乎想要回显类似stash@{n}给定存储名称的内容。下面的别名将做到这一点。(虽然它不是很有用)

[alias]
load = "!git stash list | grep \" $1$\" | awk '{ print $1 }' | sed '$ s/:$//' #"

第一次出现的 $1 被参数替换,因为它只被双引号括起来;我们需要逃避。awk 的 $1 不会被替换为<stashname>. 除了 git 已经允许你申请,pop 按名称隐藏。

$ 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
于 2013-09-08T17:23:45.903 回答