Human Git aliases包含一些带有参数的函数,例如
into = "!f() { B=$(git current-branch); git checkout $1; git pull; git merge $B --no-edit; }; f"
我很难让类似的东西在鱼上工作。
我可以创建一个鱼别名,例如git-into,该别名可以起作用,但是我宁愿拥有git别名,这样我就不必记住哪个命令使用破折号和哪个使用空格了。
使用! fish -c STUFF" or "! bash -c STUFF
不能正确传递参数。
我该怎么做
git into repository
与上述脚本等效吗?
答案 0 :(得分:3)
添加前导“!”别名确实意味着git在shell中运行它,但是shell在这里不是鱼。它是在构建时以SHELL_PATH的形式给出的shell,最有可能(默认情况下)为“ / bin / sh”。而且由于git使用相同的shell来运行其他内容(例如,分页器),所以它肯定是POSIX兼容的,可以排除鱼。
您选择的用户登录shell无关紧要。
因此您可以简单地使用原始代码,它应该可以工作。
或者,您可以将其放入$ PATH中名为git-into
的脚本中(无结束,适当的shebang行和可执行位),并且git在调用git into
时会找到它。
如果您真的要在这里使用fish -c
,则必须处理两个稍微不兼容的引号层,我不建议这样做。
答案 1 :(得分:0)
没有任何git current-branch
。
如果需要当前的分支名称:
# extract the current branch name
git branch | grep \* | cut -d ' ' -f2
# or
git rev-parse --abbrev-ref HEAD
# since you are already on the current branch all you need is pull & merge
# be aware that there can be conflicts
into = "!f() { git pull; git merge $B --no-edit; }; f"
如果您想传递参数并签出其他分支,则您已经在别名中添加了它
git checkout $1