为了账号安全,请及时绑定邮箱和手机立即绑定

如何将bash脚本直接嵌入git别名中

/ 猿问

如何将bash脚本直接嵌入git别名中

慕侠2389804 2019-11-27 10:32:52

我可以嵌入以下bash shell代码:


for name in $(git diff --name-only $1); do git difftool $1 $name & done

直接进入创建git别名:


git config --global alias.diffall ***my-bash-code-here***

这是从我之前关于SO的问题/答案开始的,在该问题中,我将代码放入.sh文件中,然后将其别名为该文件:


git config --global alias.diffall '!sh diffall.sh'

但是,在对简单性的永无止境的追求中,是否有一种方法可以跳过文件并将代码直接插入别名中?我不知道格式...


查看完整描述

3 回答

?
三国纷争

要在git别名中运行命令,尤其是将参数传递给这些命令,您可能必须创建一个临时函数,然后立即调用该函数:


$ vim ~/.gitconfig

...

[alias]

    # compare:

    foo = "! echo begin arg=$1/$2/end"

    foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"

在此示例中,该功能可能正是您所需要的(并且在单个“语句”中可以执行的操作也更加灵活);并且您可能会发现,对于这两个选项,git命令中其余的args都将作为args传递给别名,无论它是“ echo”还是“ f”;调用该函数只会消耗args,而忽略未明确使用的参数:


$ git foo a b c

begin arg=a/b/end a b c


$ git foo2 a b c

begin arg=a/b/end

另一个示例(根据匹配模式列出所有别名)(注意:您可以在整个.gitconfig中重复使用相同的函数名称“ f()”):


[alias]

    alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"

第一个返回的别名仅为“ foo $”,第二个返回的别名为“ foo。*”:


$ git alias foo

alias.foo ! echo begin arg=$1/$2/end


$ git alias 'foo.*'

alias.foo ! echo begin arg=$1/$2/end

alias.foo2 !f() { echo begin arg=$1/$2/end; }; f

(nb:实际结果可能因外壳而异;我在Linux,Unix和Cygwin(Windows)上将它与bash一起使用。)


查看完整回答
反对 回复 2019-11-27
?
湖上湖

我在文档中找不到,但是如果您在路径中创建脚本“ git- <名称>”,则可以在存储库中使用“ git name”来调用它。


看到:


$ cd ~/bin

$ echo "echo I love this log:

>pwd

>git log --graph  --summary --decorate --all" > git-logg

$ chmod +x git-logg

$ cd /path/to/your/repo

$ git logg

I love this log:

/path/to/your/repo

* commit 3c94be44e4119228cc681fc7e11e553c4e77ad04 (whatever-branch)

| Author: myself <my@Laptop.(none)>

| Date:   Fri Apr 1 16:47:20 2011 +0200

|     would have been better not to do it at all

...

$

因此,您也可以使用这种(不太明显的)方式来编写自己喜欢的任何别名。


您甚至可以在该函数的新命令中添加自动补全功能。这里的信息


$ _git_logg ()

{

  # you can return anything here for the autocompletion for example all the branches

  __gitcomp_nl "$(__gi


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 275 浏览
我要回答
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信