Git 识别转义字符

Git 识别转义字符,git,bash,zsh,Git,Bash,Zsh,我有一个方便的小别名,用于删除已合并到当前分支中的任何Git分支: alias git_delete_merged_branches='git branch --merged | grep -v "\*" | xargs -n 1 git branch -d' 在我更新到Git的最新版本(2.9)之前,它一直工作得很好,但它突然停止工作,并出现以下错误: error: branch 'blah' not found. 如果运行git branch--merged | grep-v“\*”,我

我有一个方便的小别名,用于删除已合并到当前分支中的任何Git分支:

alias git_delete_merged_branches='git branch --merged | grep -v "\*" | xargs -n 1 git branch -d'
在我更新到Git的最新版本(2.9)之前,它一直工作得很好,但它突然停止工作,并出现以下错误:

error: branch 'blah' not found.
如果运行git branch--merged | grep-v“\*”,我会得到以下输出:

  blah
这似乎是正确的,如果我运行
echo“blah\n”| xargs-n1git branch-d
一切正常。我怀疑Git可能添加了一个隐藏字符,所以我运行了Git分支--merged | grep-v“\*”| cat-v,结果如下:

  blah^[[m

什么是
^[[m
字符?我怎样才能去掉它?

它是本地机器上的东西-
我在windows和Unix上都试过了,效果很好


它是本地机器上的东西-
我在windows和Unix上都试过了,效果很好


检查.gitconfig文件的内容

你应该吃点类似的东西

[color]
    ui = auto

当输出到管道时,它应该禁用颜色。

检查.gitconfig文件的内容

你应该吃点类似的东西

[color]
    ui = auto


当输出到管道时,它应该禁用颜色。

可能是ansi/vt终端转义序列。@MarcB确实是转义序列。但它为什么会造成这种问题?这可能是试图输出一些颜色。虽然我确实认为这是一种回归,但请尝试
git branch--no color
还有一个想法:请用简单的方式尝试一下ll(最好是在
/bin/dash
中,如果你有的话):为了排除你的
zsh
git
之间发生一些奇怪的交互的可能性,比如说,一些
zsh
别名会随着git一起更新(以及最佳做法的差异)在他们和不同的人之间有各自的专长。请考虑避免在问题中混淆它们。可能是ANSI/VT终端转义序列。@ MARCB确实是一个转义序列。但是为什么会引起这种麻烦呢?这可能是输出某种颜色的尝试。虽然我认为这是一个回归,但是尝试<代码> Git分支——没有COL。或者还有一个想法:请在纯哑壳中尝试(如果有,最好是在
/bin/dash
中):排除您的
zsh
git
之间的一些奇怪交互的可能性——比如说,一些
zsh
别名随git一起更新。除此之外:
bash
zsh
是完全不同的shell,具有主要的不兼容性(以及最佳实践的差异)在他们和不同的人之间有各自的专长。请考虑避免在问题中混淆它们。这是答案。使用<代码>——没有颜色< /COD>标记作为@ kOxTix所提到的技巧。谢谢!实际上,我们应该调用<代码> Git配置——获得颜色。UI < /C> > -因为大多数设置可以从任何一个三个配置源。@LandonSchropp,那么,你把
color.ui
设置为
true
而不是
auto
,对吗?@kostix啊,你是对的,它总是
而不是
auto
。这就是答案。使用@kostix提到的
--no color
标志就成功了。谢谢!事实上,一个人应该ll
git config——获取color.ui
来计算——因为大多数设置可以来自三个配置源中的任何一个。@LandonSchropp,所以,您将
color.ui
设置为
true
而不是
auto
,对吗?@kostix啊,您是对的,它总是
而不是
auto
。是的,您是对的t、 正如迭戈所说,这是
ui=always
。是的,你是对的。正如迭戈所说,这是
ui=always