如何检查 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 |
--------------------------------------------
所以我正在制作一个脚本,从主远程存储库中获取最新的标签,并将其与我的自定义更改合并到我的本地存储库中,大约 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 |
--------------------------------------------