我的(网络)应用程序有一个主分支和一个测试分支。这些项目几乎相同,除了一个用于设置应用程序的文件(例如“setup”)。
每当我将一个分支合并到另一个分支时,我希望该分支保留其安装版本。也就是说,git 不应尝试合并对该文件的更改。
我跟着Pro Git 书中的指导并创建了一个 .gitattributes 文件,其中包含“setup merge=ours”行。然而,这不起作用——无论是快进合并还是引入冲突。
(准确地说:
$: mkdir gitest
$: cd gittest
$: git init
$: echo "setup merge=ours" >> .gitattributes
$: echo "master" >> setup
$: git add setup .gitattributes
$: git commit -a -m ...
$: git branch test
$: git checkout test
$: echo "test" >> setup
$: git commit -a -m ...
$: git checkout master
$: git merge test
预期结果:setup 包含单词“master”,而 git 执行 ff 合并,setup 为“test”。)
我遇到了同样的错误,只需在 .git/config 中定义“我们的”合并驱动程序即可解决:
[merge "ours"]
name = "Keep ours merge"
driver = true
由于 true 始终返回 0,因此保存当前状态的临时文件不会更改,并将保留为最终版本。
您可以在此处阅读有关合并驱动程序的更多信息:http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html#_defining_a_custom_merge_driver
附录:
这在实际调用驱动程序的任何时候都有效,并且似乎仅当提交更改相同文件时才会发生(git 合并属性)。如果单个分支发生变化,则不会调用驱动程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)