当我在命令行上执行git branch
时,我得到了一个repo上所有分支的列表,但是当我在子shell中执行$(git branch)
时,它首先打印出一个文件列表在打印出分支名称之前,在repo中的顶级文件夹中。为什么呢?
我基本上尝试使用for循环遍历分支,但是文件列表会破坏我的脚本。
for i in $(git branch); do
echo $i
done
答案 0 :(得分:3)
$ git branch
* master
在你的shell中试试echo * master
,看看你得到了什么?
提示:您将从*
的shell glob扩展中获取当前目录中的文件列表。
有关详细信息,请参阅DontReadLinesWithFor。
答案 1 :(得分:2)
因为您的第一个分支(或签出的分支)旁边有一个*
,这是一个shell外卡。正在评估它并将其扩展到当前目录中的文件列表。
尝试检查列表中的某个分支,您会发现文件列表移动到当前已检出分支旁边的列表中,不在顶部。