如何在ZSH中使用函数创建多行Git别名

3

我正在尝试创建一个git别名,以便能够从foo分支(master的子分支)调用git resquash。这个想法是在不知道提交的情况下从该分支的第一个提交开始进行git rebase -i。但是好像有些问题,当我尝试使用它时一直出错。

也许我的扩展写错了?我正在使用ZSH。

resquash = f() { CURRENTBRANCH=$(git symbolic-ref --short HEAD) ;\                      
                 COMMONCOMMIT=$(git merge-base ${CURRENTBRANCH} ${1-master}) ;\                      
                 git rebase -i $COMMONCOMMIT }; f
2个回答

1
如果别名是一个具有行延续的字符串,则可以将其拆分为多行。也就是说,请使用双引号将其引用,并在行末使用反斜杠字符(不要忘记转义其他双引号字符):
[alias]
    test = "!_(){ \
                echo \"Hello\"; \
                echo \"World\"; \
            };_"

0
为什么要多行? 为什么不只是一行很长的代码呢?当然别忘了 !
resquash = !"f() { CURRENTBRANCH=$(git symbolic-ref --short HEAD); COMMONCOMMIT=$(git merge-base ${CURRENTBRANCH} ${1-master}); git rebase -i $COMMONCOMMIT; }; f"

多行保留格式与其他别名一致。最好避免换行。你的行返回语法错误:意外的文件结尾 - adeluccar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接