5

另一个问题中,建议使用它来.gitattributes跟踪文件但不合并到不同的分支中,但我下面的用例似乎不起作用..

mkdir git
cd git
git init
echo "B" > b.txt
git add b.txt 
git commit -m 'Initial commit'

echo "b.txt merge=keepMine" > .gitattributes
git add .gitattributes 
git config merge.keepMine.name "always keep mine during merge"
git config merge.keepMine.driver "keepMine.sh %O %A %B"
git commit -m 'Ignore b.txt'

git checkout -b test # Create a branch
git checkout master # Back to master and make change
echo "Only in master" > b.txt
git commit -a -m 'In master'

git checkout test
git merge master # The change in b.txt is being merged...

任何的想法?谢谢..

4

2 回答 2

1

我怀疑它不起作用,因为没有合并冲突。

但是,我可以确认它git merge master --strategy=ours按预期工作。

这可能是您正在寻找的内容:如何告诉 Git 始终选择我的本地版本

如果您想为特定文件指定特定的合并策略,您真正需要做的是编写自定义合并驱动程序并在您的存储库配置中指定您希望将该合并驱动程序用作默认值。有关如何使用它,请参阅上面的链接。

简而言之,它在您的用例中不起作用的原因是因为您的用例不是 merge。它只描述了 master 上的一系列更改,并创建了一个名为 test 的临时分支,然后稍后将其移至 master。当您在测试分支上时,您从未真正引入提交

于 2012-05-28T04:30:29.560 回答
0

carleeto提到的自定义合并驱动在“ Tell git not to merge binary files but to choose ”中有说明:

您可以在.gitattributes文件中声明所需的合并类型:

echo yourConfigFile merge=keepMine > parentDirectory\.gitattributes
于 2012-05-30T06:34:02.430 回答