gpt4 book ai didi

git rerere 不自动提交自动更新 merge 解决方案

转载 作者:IT王子 更新时间:2023-10-29 00:48:01 27 4
gpt4 key购买 nike

我正在尝试使用共享 rerere 缓存来自动化一次性集成/测试分支。

想法是当分支被推送时 rerere 缓存应该是最新的,这样这些 merge 总是通过。然而,他们没有:

>>> git merge --no-ff invoicing
Staged 'analysisrequest.py' using previous resolution.
Staged '__init__.py' using previous resolution.
Auto-merging __init__.py
CONFLICT (content): Merge conflict in __init__.py
Auto-merging analysisrequest.py
CONFLICT (content): Merge conflict in analysisrequest.py
Automatic merge failed; fix conflicts and then commit the result.

此时,rerere 已经上演了它记得的决议,并且不存在实际冲突。我可以运行 git commit,然后继续,但我的集成测试构建脚本发现错误。我尝试将 --rerere-autoupdate 添加到 git merge 命令,但没有任何变化。我已将存储库配置为启用和自动应用 rerere 匹配。

我如何让 git merge 使用我以前的解决方案并在它们足够的情况下继续而不失败?

最佳答案

即使使用 --rerere-autoupdate 标志,git merge 似乎也不愿意在没有人工输入的情况下自动完成 merge 。相反,它以错误状态执行,并且您的集成工具拒绝继续。

不知道你的自动 merge 是怎么实现的,就是你能不能改变执行的Git命令。如果可以,那么您可以执行以下命令。

git merge --no-ff branch-to-merge --rerere-autoupdate
if [[ $(git rerere diff) ]]
then
git commit --no-edit
else
$(exit 1)
fi
  • git rerere diff 列出rerere之后需要解析的文件。
  • --no-edit 是防止打开提交消息编辑器所必需的。
  • 如果 rerere 无法完全 merge 所有更改,此语句仍将返回错误状态并且不会提交 merge 。
  • 提交消息仍将包含冲突文件。
  • exit 1 需要在 $() 内,除非您想退出 shell。 (猜猜我是怎么知道的。:-))

关于git rerere 不自动提交自动更新 merge 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003917/

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