我正在尝试使用共享的rerere缓存来自动化一次性集成/测试分支.
我们的想法是,当推送分支时,rerere缓存应该是最新的,以便这些合并始终通过.但是,他们没有:
>>> 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.
Run Code Online (Sandbox Code Playgroud)
在这一点上,rerere已经上演了它所记住的决议,并且不存在实际的冲突.我可以运行git commit,然后继续,但我的集成测试构建脚本会看到错误.我已经尝试添加--rerere-autoupdate到git merge命令,但没有任何改变.我已将repo配置为启用并自动应用rerere匹配.
我怎么能要求git merge使用我以前的分辨率并且如果它们足够的话可以继续而不失败?
Jos*_*uss 11
即使有了--rerere-autoupdate旗帜,git merge似乎也不愿意在没有人工输入的情况下自动完成合并.在这种情况下,它会以错误状态执行,并且您的集成工具拒绝继续.
我不知道你的自动合并是如何发生的,即你是否可以改变执行的git命令.如果可以,则可以执行以下命令.
git merge --no-ff branch-to-merge --rerere-autoupdate
if [[ $(git rerere diff) ]]
then
git commit --no-edit
else
$(exit 1)
fi
Run Code Online (Sandbox Code Playgroud)
git rerere diff 列出需要解决的文件 rerere--no-edit 是必要的,以防止打开提交消息编辑器rerere无法干净地合并所有更改,则此语句仍将以错误状态执行,并且不会提交合并.
exit 1需要在里面,$()除非你想退出你的shell(猜猜我怎么知道:-))| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |