首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.gitattributes &文件的单独合并策略

.gitattributes &文件的单独合并策略
EN

Stack Overflow用户
提问于 2011-03-29 05:09:47
回答 4查看 21.5K关注 0票数 18

我的(web)应用程序有一个主程序和一个测试分支。这些项目几乎是相同的,除了一个设置应用程序的文件,即"setup“。

每当我将一个分支合并到另一个分支中时,我希望该分支保留其安装版本。也就是说,git不应该尝试合并对该文件的更改。

我遵循guidance from the Pro Git book并创建了一个.gitattributes文件,代码行为"setup merge=ours“。然而,这不起作用--无论是快进合并还是引入冲突。

(准确地说:

代码语言:javascript
复制
$: 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”。)

EN

回答 4

Stack Overflow用户

发布于 2012-10-22 02:45:27

我也遇到过同样的错误,只需在.git/config中定义一个“我们的”合并驱动程序就可以解决:

代码语言:javascript
复制
[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,merge属性)时才会发生。如果在单个分支中有更改,则不会调用驱动程序。

票数 21
EN

Stack Overflow用户

发布于 2013-05-25 00:39:26

我发现,如果我修改了两个分支上的文件,并将修改提交到每个分支,然后尝试合并,它将调用合并驱动程序并侦听指定merge=ours.gitattributes。在此之后,两个文件在两个分支上总是不同的,因此合并驱动程序将始终被调用,所以我不需要有一个自定义的合并驱动程序来接触该文件。最初只需要对两者都进行修改即可。

票数 8
EN

Stack Overflow用户

发布于 2011-05-05 18:04:26

合并驱动程序仅在非常重要的情况下才会被调用,即如果主驱动程序和测试驱动程序都接触了设置(并且您需要首先定义合并驱动程序ours ):

代码语言:javascript
复制
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

话虽如此,我想知道在存储库中设置是否明智。如果你真的想让它处于版本控制之下,你可以使用子模块或子树合并策略来保持公共文件的同步。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5465122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档