.gitattributes及对文件中的各个合并策略

我有一个师傅,我的(网络)应用程序的测试分支。 这些项目几乎是相同的,除了一个文件,该文件设置应用程序的,说“设置”。

每当我合并一个分支到另一个,我想那支以保持其设置的版本。 也就是说,混帐不应该试图合并修改该文件。

我跟着从亲书的git的指导(http://progit.org/book/pt-br/ch7-2.html),并创建了一个.gitattributes文件,符合“设置合并=我们”。 但是,这并不工作 - 既不快进合并不是,如果我介绍的冲突。

(准确一点:

$: 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

预期结果:建立包含单词“大师”,而不是混帐执行FF合并和设置为“测试”)。

--------------解决方案-------------

我有同样的错误,它可以解决只是一个定义中的.git / config中“我们的”合并驱动程序:

[merge "ours"]
name = "Keep ours merge"
driver = true

由于真总是返回0临时文件保存当前的状态不会改变,将继续担任最终版本。

你可以阅读这里更多关于合并驱动程序:http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html#_defining_a_custom_merge_driver

附录:

这可在任何时间驱动实际被调用这似乎发生时,才会有被提交改变相同的文件(GIT合并属性)。 如果在单个分支改变驾驶员是不会被调用。

我发现,如果我修改的两个分支中的文件,并承诺修改每个分支,然后试图合并,它会调用合并司机,听我.gitattributes它指定merge=ours 。 在此之后,这两个文件总是不同的两个分支,因此合并司机总是会被调用,所以我没有需要有一个接触文件的自定义合并的驱动程序。 它仅需要具有两个初始修改。

合并驱动程序仅称为非平凡的情况下,即如果主机和测试已经触及设置(你需要定义合并驱动程序ours在前):

git init
git config merge.ours.name '"always keep ours" merge driver'
git config merge.ours.driver 'touch %A'
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
echo "more content" >> setup
git commit -a -m ...
git merge test

说了这么多我不知道它是明智的已经安装在仓库中的。 如果你真的想要的版本控制之下,你可以使用子模块或子树合并策略,以保持通用文件同步。

在单独的分支代替污迹清理脚本。 该脚本可以取决于你是什么机器有所不同。

分类:混帐 时间:2015-03-15 人气:4
本文关键词: 混帐
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.189 (s). 10 q(s)