bash通过git cherry-v master循环并获取第一个和最后一个提交Id

bash通过git cherry-v master循环并获取第一个和最后一个提交Id,git,bash,Git,Bash,我正在尝试编写一个批处理文件,以尝试获取在创建分支后或上次合并到主分支后修改的文件 我可以在终端中这样做: git cherry -v master git diff <first commit id> <last commit id> --name-only -- '*.jpg' '*.png' '*.gif' OUTPUT=$(git diff FIRSTCOMMIT LASTCOMMIT --name-only -- '*.jpg' '*.png' '*.gif'

我正在尝试编写一个批处理文件,以尝试获取在创建分支后或上次合并到主分支后修改的文件

我可以在终端中这样做:

git cherry -v master
git diff <first commit id> <last commit id> --name-only -- '*.jpg' '*.png' '*.gif'
OUTPUT=$(git diff FIRSTCOMMIT LASTCOMMIT --name-only -- '*.jpg' '*.png' '*.gif')
echo "$OUTPUT"
我只需要第一行和最后一行的散列

这就是我现在的处境:

echo
echo "--------------------------"
echo "Show commits after last merge to master"
echo "--------------------------"
echo

COMMITDIFFFROMMASTER=$(git cherry -v master)
echo "$COMMITDIFFFROMMASTER"
echo
echo "__________________________"
我希望像这样运行git diff:

git cherry -v master
git diff <first commit id> <last commit id> --name-only -- '*.jpg' '*.png' '*.gif'
OUTPUT=$(git diff FIRSTCOMMIT LASTCOMMIT --name-only -- '*.jpg' '*.png' '*.gif')
echo "$OUTPUT"
我对编写批处理文件非常陌生。这是我第一次写它。如果这是一个非常愚蠢的问题,请原谅


谢谢

此代码是否适用于您:

git cherry -v master|sed -n -e '1p' -e '$p'|awk '{print $2}'
要将其集成到批处理文件中,请执行以下操作:

first_last_commit=$(git cherry -v master|sed -n -e '1p' -e '$p'|awk '{print $2}')
OUTPUT=$(git diff ${first_last_commit} --name-only -- '*.jpg' '*.png' '*.gif')
echo "$OUTPUT"

我只需要第一行和最后一行的散列。
我没有得到你想要的东西?散列表示
#
?如果是,那么
#
在哪里?我所说的散列是指每行输出中的sha1(例如:4ff211dbc960724281ce75c3bb99024b6631a522)