免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8404 | 回复: 5
打印 上一主题 下一主题

git 二进制文件merge 失败如何处理 [复制链接]

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-20 19:30 |只看该作者 |倒序浏览
merge 两个branch 时:比如 r1, r2 两者都有一个bianry
git co r1
git merge r2
然后报错

Auto-merging bin/libaudio.a
CONFLICT (content): Merge conflict in bin/libaudio.a
Automatic merge failed; fix conflicts and then commit the result.
zhaoyulong@macos:audio/audio_prj$ git st
# On branch master
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#        both modified:      bin/libaudio.a
#
# Untracked files:

提示说 git add/rm <file>...; 搞不明白咋处理; 不知道 libaudio.a 处于什么状态, 是 r1 的呢 还是 r2的, 或者 <<<<<xxx ===== yyy 这类的冲突格式呢?
首先vi 打开搜索 === 没有找到, 然后与 r1 原来的 libaudio.a 比较, 发现仍然是 r1 相同的版本; 那么, 就开始琢磨怎么办了, 很显然, git add 是接收当前的 libaudio.a 也就是 r1 版的, 但我想要 r2 版的, 既然 git add 肯定不行, 我就 git rm 吧。。。。。。结果将 libaudio 给删除了。。。。。。。

于是我的 merge 后的缺少了这个文件。。。。。然后想再 merge 告诉你没什么可做的。。。。。。拜托, 好歹一个存在 libaudio.a 另一个缺少这个文件好不。。。。。。。
我现在除了在手工拷贝之外,然后 add 外, 每办法了

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
2 [报告]
发表于 2012-02-20 21:25 |只看该作者
是否两个branch里都把bin/libaudio.a加入git repositiory 里,或者说已经tracked。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
3 [报告]
发表于 2012-02-20 22:04 |只看该作者
peijue 发表于 2012-02-20 21:25
是否两个branch里都把bin/libaudio.a加入git repositiory 里,或者说已经tracked。


是的, 但现在的问题是 merge branch 的时候, c 文件还能创建 diff 格式的conflict 文件, 直接编辑该文件然后 git add 即可; 二进制文件它压根不给你合并, 仍然是旧的, 你 add 吧, 二进制文件没更新, 不add更不靠普, 直接将该文件 untrack了;
现在只能是先 checkout 分支1, 将 binary 文件重新copy 一份; 然后 checkout 分支2, 然后 git merge 分支1, 等它报错, 将事先拷贝好的binary 文件替换相应的binary, 然后再 git add;
简直恶心死

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
4 [报告]
发表于 2012-02-21 02:11 |只看该作者
你可以在冲突的时候吧你要的版本checkout出来啊,比如你要r1的:
git co --ours libaudio.a
或者要r2的:
git co --theirs libaudio.a
或者直接从branch checkout一个出来:
git co r2 libaudio.a

然后再add嘛……

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
5 [报告]
发表于 2012-02-21 09:28 来自手机 |只看该作者
对git生, 我试试

论坛徽章:
2
戌狗
日期:2013-11-06 17:35:36寅虎
日期:2014-10-20 23:12:29
6 [报告]
发表于 2012-02-21 10:33 |只看该作者
4楼正解。 不过两个做merge的branch不应该差距太大。 要是conflict太多的话,还不如bcompare来的省事
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP