gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:02:13 24 4
gpt4 key购买 nike

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

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

重点是我想知道哪些提交已成功 merge (并且需要推送到我的自定义 git)。但有时 repo 协议(protocol)已经是最新的(即远程 repo 协议(protocol)中的新标签没有任何新提交),在这种情况下,即使没有真正 merge 任何内容,也会显示“merge 成功”消息。

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

最佳答案

在开始 merge 之前,存储当前分支头的哈希:

git rev-parse HEAD

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

您也可以通过检查状态码来确定状态:

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

关于bash - 如何检查 git merge 是否真的在多 repo bash 脚本中进行了 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com