我想避免git自动合并我的composer.json。这样我可以在开发分支中使用一个使用dev-develop包的composer.json,而master中的那个只使用dev-master包。
我可以使用两个composer.json文件作为建议here,但我担心我最终会忘记在我的composer.json中为master添加一个bundle。特别是在自动化任务时,这可能会导致灾难。
所以实际上我想要git:
答案 0 :(得分:3)
虽然我确实倾向于同意您描述的特定方案可能表明您的开发过程存在更深层次的问题,但可以通过在文件上设置merge
属性来轻松地执行您要求的操作。问题是,两个值中的一个。来自"执行三向合并" git help attributes
的部分,它们是:
merge
未设置将当前分支中的版本作为暂定合并结果,并声明合并存在冲突。这个 适用于没有明确定义的合并语义的二进制文件。
要确定这一点,请执行:
echo "composer.json -merge" >> .gitattributes
merge=binary
将分支中的版本保留在工作树中,但保留路径处于冲突状态以供用户进行整理。
要确定这一点,请执行:
echo "composer.json merge=binary" >> .gitattributes
这些描述并未真正说明行为会有何不同,事实上,在测试时,两者都会产生此输出:
$ git merge develop
warning: Cannot merge binary files: composer.json (HEAD vs. develop)
Auto-merging composer.json
CONFLICT (content): Merge conflict in composer.json
Automatic merge failed; fix conflicts and then commit the result.
$ git status
On branch attr-test-2
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: composer.json
no changes added to commit (use "git add" and/or "git commit -a")
由于你想要的语义不一定要声明这个文件是二进制文件,而只是告诉git不要自动合并它,-merge
似乎有点优先。