gpt4 book ai didi

Git 从不(自动) merge composer.json

转载 作者:太空狗 更新时间:2023-10-29 13:13:03 29 4
gpt4 key购买 nike

我想避免 git 自动 merge 我的 composer.json。这样我就可以在 develop 分支中有一个使用 dev-develop 包的 composer.json,而 master 中的那个只使用 dev-master 包。

我可以按照建议使用两个 composer.json 文件 here ,但我担心我最终会忘记在我的 composer.json 中为 master 添加一个包。尤其是在自动化任务时,这可能会导致灾难。

所以实际上我希望 git 能够:

  • merge composer.json 时总是冲突,所以我可以在提交到分支之前手动编辑它。
  • 仅根据行数 merge .. 所以如果添加/删除一个包,行数发生变化,那么它应该 merge ,冲突,等等。如果一行的内容发生变化,它可能会忽略那..

最佳答案

虽然我确实倾向于同意您描述的特定场景可能表明您的开发过程存在更深层次的问题,但可以通过设置 merge 属性让 git 很容易地完成您的要求在有问题的文件上,到两个值之一。从 git help attributes 的“Performing a three-way merge”部分,它们是:

merge unset

Take the version from the current branch as the tentative merge result, and declare that the merge has conflicts. This is suitable for binary files that do not have a well-defined merge semantics.

要建立这个,做:

echo "composer.json -merge" >> .gitattributes

merge=binary

Keep the version from your branch in the work tree, but leave the path in the conflicted state for the user to sort out.

要建立这个,做:

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 它,-merge 似乎更可取。

关于Git 从不(自动) merge composer.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826654/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com