如何覆盖获取冲突,以便如果git找到相同的确切文件,它不会产生冲突?

时间:2014-03-24 00:25:49

标签: git netbeans centos

在浏览了无数网站和许多不同的流量帖后,我找不到一个看似简单的解决方案的答案。

我的设置

我在NetBeans上进行本地开发,但除了获取更新之外,不通过NetBeans执行任何git操作。无论何时我在NetBeans上保存/删除/创建/等,这些更改都会自动传播到远程Linux服务器。然后,我使用该远程服务器上的Linux命令行运行所有git命令。

问题和疑问

由于我在netbeans上进行了原始开发,因此git fetch操作提取的一些文件已经存在于netbeans中,因此会引发冲突。有没有办法防止这种情况发生?我需要能够将其他开发人员的更新提取到我的netbeans中,而不是因为我自己的文件已经存在而导致这些冲突。我以前使用SVN并没有这个问题,因为SVN不关心,但现在我们切换到git,我必须解决这个问题。

更新

由于在具有不同行结尾(/ r / n)的窗口中的NETBEANS比在linux(/ n)中创建文件时由于NETBEANS而导致问题。因此,名为http://plugins.netbeans.org/plugin/46829/change-line-endings-on-save的netbeans插件将所有行结尾转换为linux并解决了问题。

在此问题得到解决后,出现了另一个问题,基本上告诉我,对GIT的netbeans支持并非100%完成。基本上,如果您尝试拉入netbeans工作副本中已有的文件,GIT会发生冲突,即使它们是具有相同内容且具有相同unix行结尾的完全相同的文件。为了解决这个问题,我不得不为windows http://msysgit.github.io/下载一个git命令行客户端(因为netbeans目前不支持stashes)。然后只需安装带有unix行结尾的bash部分,并运行git stash save“my changes”。然后做提取&合并(或拉),然后运行git stash apply PATCHNAME。没有冲突。 :-) 谢谢! MAYUR!

1 个答案:

答案 0 :(得分:1)

这是预期和期望的行为。假设你在文件b中对函数a进行了更改,并且没有在本地存储库(工作区)中提交并维护它。并且说其他一些开发人员也在同一个文件和函数中进行了更改,但是将其提交到git存储库中,从中提取他/她的更改。在这种情况下,git将尝试以最佳方式使用它的智能(合并算法)来合并代码,但如果冲突真的很难看,它会通知开发人员进行手动合并。这是必需的行为。 git如何知道要保留什么?


我们共同努力解决这个问题:

这是Linux线路终结(EOL)的罪魁祸首。通过netbeans IDE获取到Windows的每个git都会引入linux EOL,这会与行尾样式冲突并导致合并冲突。这里最好的事情是从Windows框提交时提交为Linux EOL。