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