Git Foreach-将符号添加到Foreach循环中,是否需要嵌套的Foreach

Git Foreach-将符号添加到Foreach循环中,是否需要嵌套的Foreach,git,powershell,foreach,Git,Powershell,Foreach,我的剧本需要一些帮助;我已经完成了第一部分,但第二部分我不完全确定是否需要第二个foreach。 首先,脚本从分支输出文件和散列。在散列旁边,我已经设法添加了一个符号,我可以稍后更改为输出“散列”。我想在每个输出的文件旁边添加“文件”的第二部分,下面我已经包括了输出应该是怎样的,它是这样的;但我似乎无法在每个文件名旁边加上“文件”符号 $GitList = git log master..branch2 --pretty=format:'%H' --reverse foreach ($has

我的剧本需要一些帮助;我已经完成了第一部分,但第二部分我不完全确定是否需要第二个foreach。 首先,脚本从分支输出文件和散列。在散列旁边,我已经设法添加了一个符号,我可以稍后更改为输出“散列”。我想在每个输出的文件旁边添加“文件”的第二部分,下面我已经包括了输出应该是怎样的,它是这样的;但我似乎无法在每个文件名旁边加上“文件”符号

$GitList = git log master..branch2 --pretty=format:'%H' --reverse


foreach ($hash in $GitList) {
    "$hash hash"
    $files = git show $hash --pretty="format:" --name-only
    $files
}


#-------------------------------output should be like below

37b970b35681728db2faa4135681728d hash
branch2/ScriptPart1.ps1 file
37b970b371a7805a657030f687135681728d hash
branch2/ScriptPart2.ps1 file
branch2/ScriptPart3.ps1 file
37b970b30a137b970b381e5d5135681728d hash
branch2/ScriptPart2.ps1 file
321b2feb5d37b970b32d47f4135681728d hash

提前谢谢

我只想对每个物体做一个快速而肮脏的处理,然后就可以了。。。大致如下:

$files | Foreach-Object { "{0} file" -f $_ }

您的主要问题可能是,行的返回值:

git show $hash --pretty="format:" --name-only
由PowerShell作为字符串数组处理,其中包含两项,第一项包含空字符串

直接解决第二个问题将是实现您在这里想要做的事情的一种方式:

$GitList = git log master --pretty=format:'%H' --reverse

foreach ($hash in $GitList) {
    "$hash hash"
    (git show $hash --pretty="format:" --name-only)[1] + ' file'
}
顺便说一下:根据您的场景,您可以考虑使用PSObjts作为输出。特别是如果您计划通过PowerShell进一步处理脚本的输出:

foreach ($hash in $GitList) {
    $file = (git show $hash --pretty="format:" --name-only)[1]
    New-Object -Type psobject -Property @{'Hash'= $hash; 'File' = $file}
}

我不知道Powershell,但是是的,您必须循环查看
$文件的列表。