You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Git合并非文本文件?以LibreOffice .ods文件为例

解决Git中LibreOffice .ods文件的合并冲突

我太懂这种痛点了——Git对二进制格式的.ods文件根本没法自动合并,碰到两个人改同一份表格的情况,只能手动来整合。别担心,跟着下面的步骤一步步来就行:

1. 稳住当前的合并状态

当Git提示你冲突、没法自动合并时,别乱操作,此时合并已经处于暂停状态。先跑个命令确认下冲突文件的状态:

git status

你会看到冲突的.ods文件被标记为both modified,这就对了。

2. 导出两个冲突版本为单独文件

Git其实已经把冲突的三个版本(共同祖先、你本地的版本、对方分支的版本)存在了暂存区里,我们只需要把你和对方修改后的版本导出来:

  • 导出**你当前分支(HEAD)**的修改版本:
git show :2:your-file.ods > my-edits.ods
  • 导出要合并进来的分支的修改版本:
git show :3:your-file.ods > their-edits.ods

小解释::2:是Git内部标记,代表当前分支的版本;:3:代表要合并的目标分支版本,别搞混哦。

3. 手动整合两个版本

打开LibreOffice Calc,分别打开my-edits.odstheir-edits.ods,对比两份表格里的修改——比如谁改了哪个参数、新增了哪些行,然后把需要保留的内容都整合到一个新文件里,比如叫final-merged.ods

整合完后,用这个新文件替换掉工作区里那个冲突的原文件:

cp final-merged.ods your-file.ods

4. 收尾完成合并

接下来把处理好的文件加到Git暂存区:

git add your-file.ods

然后完成合并提交:

git commit

这时候Git会自动打开提交说明的编辑器,你可以留着默认的合并说明,或者补充写下这次手动合并的要点,保存退出就搞定了。

额外小建议

  • 合并完记得把刚才生成的临时文件(my-edits.odstheir-edits.odsfinal-merged.ods)删掉,免得占地方。
  • 如果你们团队经常要改这份表格,其实可以考虑把参数拆成纯文本格式(比如YAML、JSON),这样Git就能自动合并了;不过要是必须用.ods的话,手动合并还是最靠谱的办法。

内容的提问来源于stack exchange,提问作者Daniel Griscom

火山引擎 最新活动