【问题标题】:How do I override fetch conflicts, so that if git finds the same exact file, it doesn't give a conflict?如何覆盖获取冲突,以便如果 git 找到相同的确切文件,它不会产生冲突?
【发布时间】:2014-03-24 00:25:49
【问题描述】:

在浏览了无数网站和许多不同的 stack over flow 帖子后,我找不到看似相当简单的解决方案的答案。

我的设置

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

问题和疑问

由于我在 netbeans 上进行了最初的开发,因此 git fetch 操作拉取的一些文件已经存在于 netbeans 中,因此会引发冲突。有没有办法防止这种情况发生?我需要能够将其他开发人员更新拉到我的 netbeans 中,并且不会收到由我自己的文件已经存在引起的这些冲突。之前用SVN没出现这个问题,因为SVN不在乎,但现在我们切换到git,我必须解决这个问题。

更新

原来问题是由于 Windows 中的 NETBEANS 与在 linux 中创建文件时 (/n) 具有不同的行尾 (/r/n)。所以一个名为http://plugins.netbeans.org/plugin/46829/change-line-endings-on-save 的netbeans 插件将所有行尾转换为linux 并解决了这个问题。

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

【问题讨论】:

    标签: git netbeans centos


    【解决方案1】:

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


    我们共同解决这个问题的解决方案:

    罪魁祸首是 linux 行尾 (EOL)。每个通过 netbeans IDE 获取到 windows 的 git 都会引入 linux EOL,这将与行尾样式冲突并导致合并冲突。当您从 Windows 框提交时,最好的做法是作为 linux EOL 提交。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      相关资源
      最近更新 更多