gpt4 book ai didi

git - 如何覆盖 fetch 冲突,这样如果 git 找到相同的确切文件,它不会产生冲突?

转载 作者:行者123 更新时间:2023-12-04 19:38:15 27 4
gpt4 key购买 nike

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

我的设置

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

问题和疑问

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

更新

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

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

最佳答案

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

我们一起解决这个问题的解决方案:

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

关于git - 如何覆盖 fetch 冲突,这样如果 git 找到相同的确切文件,它不会产生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com