git branch vs $(git branch)

时间:2014-07-17 20:00:55

标签: git bash subshell

当我在命令行上执行git branch时,我得到了一个repo上所有分支的列表,但是当我在子shell中执行$(git branch)时,它首先打印出一个文件列表在打印出分支名称之前,在repo中的顶级文件夹中。为什么呢?

我基本上尝试使用for循环遍历分支,但是文件列表会破坏我的脚本。

for i in $(git branch); do 
    echo $i
done

2 个答案:

答案 0 :(得分:3)

$ git branch
* master

在你的shell中试试echo * master,看看你得到了什么?

提示:您将从*的shell glob扩展中获取当前目录中的文件列表。

有关详细信息,请参阅DontReadLinesWithFor

答案 1 :(得分:2)

因为您的第一个分支(或签出的分支)旁边有一个*,这是一个shell外卡。正在评估它并将其扩展到当前目录中的文件列表。

尝试检查列表中的某个分支,您会发现文件列表移动到当前已检出分支旁边的列表中,不在顶部。