为什么这对我的.gitconfig来说是一个糟糕的配置行?

时间:2016-10-21 16:10:18

标签: git bash

bd = "!f() { git branch --merged | egrep -v '(^\*|master|dev)' | xargs git branch -d }; f"

我试图别名git命令来删除我所有的本地合并分支。
当我将bash命令放入我的gitconfig中时,git抱怨一个错误的配置行:
fatal: bad config line 26 in file /Users/johnsona/.gitconfig

2 个答案:

答案 0 :(得分:6)

我建议改为在PATH中创建一个bash脚本,然后在你的git别名中调用该脚本(或者无论如何它都在你的PATH中,只需命名文件{{1} })。

例如,制作文件 => 00 A4 04 00 08 A0 00 00 01 51 00 00 00 00 .........Q.... (9407 usec) <= 6F 64 84 08 A0 00 00 01 51 00 00 00 A5 58 9F 65 od......Q....X.e 01 FF 9F 6E 06 47 91 23 47 41 00 73 49 06 07 2A ...n.G.#GA.sI..* 86 48 86 FC 6B 01 60 0B 06 09 2A 86 48 86 FC 6B .H..k.`...*.H..k 02 02 02 63 09 06 07 2A 86 48 86 FC 6B 03 64 0B ...c...*.H..k.d. 06 09 2A 86 48 86 FC 6B 04 02 55 65 0B 06 09 2B ..*.H..k..Ue...+ 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01 04 ...Hd...f...+... 01 2A 02 6E 01 02 90 00 .*.n.... Status: No Error cm> set-key 255/1/DES-ECB/404142434445464748494a4b4c4d4e4f 255/2/DES-ECB/404142434445464748494a4b4c4d4e4f 255/3/DES-ECB/404142434445464748494a4b4c4d4e4f cm> init-update 255 => 80 50 00 00 08 7D 62 4D F4 89 F6 07 E3 00 .P...}bM...... (55368 usec) <= 00 00 42 87 00 17 97 93 24 74 FF 02 00 01 3C 2B ..B.....$t....<+ 97 86 B8 3B 57 0A D0 9F 82 BF AD C2 90 00 ...;W......... Status: No Error cm> ext-auth plain => 84 82 00 00 10 EA 1A 9D A0 24 E6 00 9E F8 84 96 .........$...... 1A 77 71 46 B4 .wqF. (56879 usec) <= 90 00 .. Status: No Error cm> delete ff4563686f4170706c6574 => 80 E4 00 00 0D 4F 0B FF 45 63 68 6F 41 70 70 6C .....O..EchoAppl 65 74 00 et. (956894 usec) <= 00 90 00 ... Status: No Error

git-bd

使用以下命令使文件可执行:

~/bin/git-bd

并确保您的#!/usr/bin/env bash git branch --merged | egrep -v '(^\*|master|dev)' | xargs git branch -d chmod +x ~/bin/git-bd .bashrc文件包含以下内容:

.bash_profile

您可以直接致电.bash_login,也可以像export PATH="$HOME/bin:$PATH" 一样添加别名:

git-bd

要添加到此答案,您收到错误配置错误的原因可能是由于反斜杠。 git-config将按原样读取它们,因此您需要使用第二个反斜杠再次将它们转义。

答案 1 :(得分:0)

要使@torek的comment更加可见并对其进行扩展:当您要将其放入gitconfig中时,这样的命令有几个问题,可以使结果更简单

假设您要为following command加上别名:

git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d
  • 它使用|,因此您必须在命令前加上!(您已经这样做了)
  • 它使用",所以您要么用\"转义,要么使用单个'(也已经固定)
  • 它使用\,因此您必须使用\\对其进行转义。

结果

[alias]
    delete-merged-branches = ! git branch --merged | egrep -v '(^\\*|master)' | xargs git branch -d 

您还可以在bash中运行(不是git会为您逃脱\,但您必须用"换行,所以您需要对它们进行逃脱)

git config --global alias.delete-merged-branches "! git branch --merged | egrep -v '(^\*|master|dev)' | xargs git branch -d"