我如何明确阻止Git尝试合并?我 从不 希望它合并。
从How to make Git honor a cancelled merge that was not asked for?开始,我知道该工具不尊重我的取消,因为它在没有问我的情况下杀死了它旋转的编辑器。所以现在我只是kill -9
终端流程。
如果我遇到Git想要合并的情况,我总是想要服务器的源文件副本。我只是在本地删除该文件,然后从服务器再次获取它。
现在,Git用这样的善良来帮助我:
您尚未完成合并(MERGE_HEAD存在) 请在合并之前提交您的更改。
当然,git reset HEAD <file>
无效。
这是最好的部分:它们是 完全 相同的文件。它们之间存在 没有 差异。我做了一个更改,我在8到12个不同的平台上测试它(用scp
复制),然后我在测试后在其中一个盒子上检查它。但是从Tell Git to stop prompting me for conflicts when none really exist?开始,我知道这个工具太愚蠢了,无法在这方面表现出任何情报。
如果您想知道,有一组来源。它们是位于远程服务器上的项目源。我想让Git做的就是结账(克隆),更新(拉),告诉我改变了什么(差异)和签到(推)。我不需要该工具的任何其他功能。
答案 0 :(得分:4)
您可以为&#39; *
&#39;声明custom merge driver。 ({1}}中的(所有文件),带有.gitattributes
脚本。
keepTheir
echo * merge=keepTheir > dirWithCopyMerge\.gitattributes
git config merge.keepTheir.name "always keep theirduring merge"
git config merge.keepTheir.driver "keepTheir.sh %O %A %B"
将是:
keepTheir.sh
我需要获取服务器的文件副本(并且可能会混合更改)。在Subversion下,我会使用svn update
简单:使用git fetch
(不会触发任何合并),然后git checkout
:
mv -f $3 $2
exit 0
(参见&#34; git: how to update (checkout) a single file from remote origin master&#34;)
答案 1 :(得分:0)
将此添加到您的.git/config
[merge "keepTheir"]
name = always keep their during merge
driver = cp -f %B %A
并将其添加到您的.gitattributes
public/dist/app.min.css merge=keepTheir