2012-11-30 42 views
0

当前我们将二进制文件提交到源代码控制中,这些文件将由不同的人员更改,然后重新提交。但是,这可能会导致合并冲突。让混帐不合并二进制文件,但保持两个?

实际上,由于这些文件包含图像等内容,因此合并它们并没有意义。

我在想如果有一个git命令允许二进制文件之间可能的合并冲突。

IE:有两个仓库和一个裸露的远程仓库,用于共享。有一个文件image.png,用户这两个存储库分别进行更改和提交。然后他们拉取所做的更改,然后将其更改推送到远程回购。显然这会为其中一个用户产生合并冲突。但是这对图像文件没有意义,是否有可能最新的提交可以是最新的提交,而较旧的提交可以添加到分支的历史记录?

我很清楚这不是应该如何完成的,但这是我所处的情况,所以我想知道是否有人有解决方案。

回答

0

是的。 git reset只是冲突的路径要取代版本(git resetthecommitwiththesupersededfiles--paths),提交的是,再加入(或重置)更换(即正确的)版本,并提交结果。如果你不喜欢在你的主线上进行人为和已知的不一致的提交,你也可以做一个孤立提交只有被取代的文件(用一个提交消息说明它们是什么),并将其添加为将提交的父项与主分支上选定的版本合并。请阅读git mktreegit commit-tree以了解如何做到这一点,它实际上非常简单。

+0

这是否会使它们与远程回购不一致? IE:我会遇到一致性问题吗? – toofarsideways

+0

不是 - 当你尝试合并时出现冲突,所以你已经在做一个新的提交,并且任何上游的用户都必须提取合并提交。 – jthill

+0

我得'git checkout --theirs image.png',提交它然后'git checkout --ours image.png'这两个对付合并提交然后重新绑定来摆脱它不是我? – toofarsideways