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

标签 bash git github merge git-merge

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

相关文章:

git - 如何使用 GitLab API 访问源代码文件和列出目录?

java - Jenkins、Maven、Nexus - 将第 3 方 JAR 部署到需要身份验证的 Nexus

git - 在 Github 中查找所有空仓库

Android:导入项目/库?

bash - 使用 bash 自动回答 Graphite 安装的 django sync 提示

bash - Jenkins 在控制台输出页面中显示 echo 命令

bash - Bash 中的整数默认有符号吗?

git - 避免在执行 git push 时 pop 询问用户名的 pop 窗口

python - 如何有效地使用 jenkins、github 并将 jenkins 报告发送到电子邮件?

Bash vi 模式 - 绑定(bind) "C-c"以退出插入模式