如何检查 git merge 是否真的在 multi-repo bash 脚本中进行了合并

How to check if git merge really did a merge in a multi-repo bash script

所以我正在制作一个脚本,从主远程存储库中获取最新的标签,并将其与我的自定义更改合并到我的本地存储库中,大约 10-20 个存储库,在一个脚本中。合并部分看起来像这样:

git fetch -q https://android.googlesource.com/platform/$REPO_PATH $TAG
git merge -q --no-ff FETCH_HEAD
if [ $? -eq 0 ]; then
    echo -e "$REPO_PATH merged succesfully"
else
    echo -e "\n$REPO_PATH has merge conflict(s)\n"
fi

重点是我想知道哪些提交已成功合并(并且需要推送到我的自定义 git)。但有时回购已经是最新的(即远程回购中的新标签没有任何新提交),在这种情况下 "merged succesfully" 消息显示,即使没有真正合并。

我只想知道哪些所有存储库都经历了合并并需要推送到我的 git,还想知道哪些所有存储库都有合并冲突(尽管这在我的脚本中工作正常)。我所注意到的是,当 git 进行真正的合并时,它会打开 nano 请求提交消息。但我不知道如何使用它来检测合并。提前致谢。

开始合并之前,存储当前分支头的哈希值:

git rev-parse HEAD

然后运行合并命令后再次检查,如果相同,则无法完成合并。

您也可以通过查看状态码来判断状态:

  | Match      | No Match                    |
  --------------------------------------------
0 | Up to Date | Merged                      |
  --------------------------------------------
1 | Conflict   | Something is horribly wrong |
  --------------------------------------------