首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.gitattributes合并策略无效

.gitattributes合并策略无效
EN

Stack Overflow用户
提问于 2017-01-13 17:51:52
回答 1查看 2.3K关注 0票数 4

我在.gitattributes中使用了合并策略来在合并期间保存文件。我还使用git config --global merge.ours.driver true;在我的配置中设置驱动程序(我检查了[merge "ours"] driver = true的配置,它就在那里)。

正确设置了合并策略:

代码语言:javascript
复制
src/public/bundle.js merge=ours
src/public/main.min.css merge=ours
server/middlewares/https_redirect.js merge=ours

然而,当我合并时,我仍然从被合并的分支获取文件。

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-13 20:27:27

您需要的是自定义的“合并策略”。

请参阅git: How do I add a custom merge strategy? (编辑添加:编写合并策略处理程序要比编写自定义合并驱动程序困难得多。但这是得到我相信你想要的行为的唯一方法。

您所拥有的是一个自定义合并驱动程序。

您的设置看起来确实是正确的(尽管有点“欺骗-y”,使用/bin/true或等效的shell,只需将%A文件单独放置并成功退出:-)。但我怀疑你与通常的问题有冲突,那就是:

Git只在存在两种不同组合的情况下调用一个三向合并驱动程序.

也就是说,假设我们实际上是在进行三向合并。这意味着存在某个文件(如src/public/bundle.js )的合并基版本,因为合并基提交不同于两个分支提示提交。我们在某个分支上,它的提示提交是1111111,我们合并了其他一些提交,它们的散列ID是2222222git merge-base 1111111 2222222bbbbbbb。因此,Git已经做了git diff bbbbbbb 1111111来实现从基础到我们的变化,而git diff bbbbbbb 2222222实现了从基础到他们的变化。

src/public/bundle.js的基本版本是提交bbbbbbb中的版本。但是,也许从bbbbbbb:src/public/bundle.js1111111:src/public/bundle.js的差异是空的,而从bbbbbbb:src/public/bundle.js2222222:src/public/bundle.js的差异是非空的。

在这种情况下,Git不会对文件进行三向合并。没必要,所以就不麻烦了。它根本不调用您的自定义合并驱动程序;它只是获取文件的2222222版本,并说“我完成了,全部合并了!”

不管是让Git使用它自己的内置合并代码,还是指定一个自定义驱动程序,这都是正确的:当Git可以(或者认为它可以)完全不进行合并的时候,它根本不需要调用合并代码。它只是采取了一个改变的版本,并称其良好。

(就我个人而言,我认为这是错误/错误,但Git多年来一直是这样做的,Git的人似乎不愿意改变它。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41640602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档