如何使用脚本循环git状态

如何使用脚本循环git状态,git,scripting,git-status,Git,Scripting,Git Status,我需要帮助: 我想在没有状态码的情况下循环git状态码,或者将状态码放在一行中;我正在使用下面的代码: # file.sh files=$(git status --porcelain) for file in $files; do echo $file done # OUTPUT M example_folder/example_file M example_folder_1/example_file_1 M example_folder_2/example_file_2 ....

我需要帮助:

我想在没有状态码的情况下循环git状态码,或者将状态码放在一行中;我正在使用下面的代码:

# file.sh
files=$(git status --porcelain)
for file in $files; do
    echo $file
done

# OUTPUT
M
example_folder/example_file
M
example_folder_1/example_file_1
M
example_folder_2/example_file_2
....
问题是状态代码始终显示,我需要删除状态代码或按如下方式将其放在一起:

# LINES EXPECTED
M example_folder/example_file
M example_folder_1/example_file_1
# OR
example_folder/example_file
example_folder_1/example_file_1
files=$(git status --porcelain)
for file in $files; do
    echo $file
    git add $file
    read -p "enter a comment: " comments
    git commit -m "${comments}"
done
我的目标是使用控制台输出输入,如下所示:

# LINES EXPECTED
M example_folder/example_file
M example_folder_1/example_file_1
# OR
example_folder/example_file
example_folder_1/example_file_1
files=$(git status --porcelain)
for file in $files; do
    echo $file
    git add $file
    read -p "enter a comment: " comments
    git commit -m "${comments}"
done
上面的代码正在工作,但状态代码也收到了注释,我需要删除或将其放在每行修改的一行中


问候。

您想写以下内容:

#!/bin/sh

files=$(git status --porcelain | cut -b4-)
for file in $files; do
    echo $file
    git add $file
    read -p "enter a comment: " comments
    git commit -m "${comments}"
done
cut-b4-
将修剪输出的状态部分。

--cerial
在中显示结果

在短格式中,每个路径的状态显示为以下形式之一

原始路径
重命名为
路径
时,会出现第二种格式。使用
awk
获取
路径

files=$(git status --porcelain | awk '{print $NF}')
for file in $files; do
    echo $file
    git add $file
    read -p "enter a comment: " comments
    git commit -m "${comments}" -- ${file}
done