我想避免git自动合并我的composer.json.这样我可以在开发分支中使用composer.json,该分支使用dev-develop包,而master中的那个只使用dev-master包.
我可以使用这里建议的两个composer.json文件,但我担心我最终会忘记在我的composer.json中为master添加一个bundle.特别是在自动化任务时,这可能最终导致灾难.
所以实际上我想要git:
merge虽然我确实倾向于同意您描述的特定场景可能表明您的开发过程存在更深层次的问题,但通过将相关文件的属性设置为两个值之一,可以使 git 轻松地完成您所要求的操作。从 的“执行三向合并”部分来看git help attributes,它们是:
merge未设置将当前分支的版本作为暂定合并结果,并声明合并有冲突。这适用于没有明确定义的合并语义的二进制文件。
要建立这一点,请执行以下操作:
echo "composer.json -merge" >> .gitattributes
Run Code Online (Sandbox Code Playgroud)
merge=binary将分支中的版本保留在工作树中,但将路径保留为冲突状态,以便用户进行整理。
要建立这一点,请执行以下操作:
echo "composer.json merge=binary" >> .gitattributes
Run Code Online (Sandbox Code Playgroud)
这些描述并没有真正清楚地说明行为有何不同,事实上,经过测试,它们都会产生以下输出:
$ 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")
Run Code Online (Sandbox Code Playgroud)
因为你想要的语义不一定是声明这个文件是二进制的,而只是告诉 git 不要自动合并它,-merge似乎稍微更可取。
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |