冲突解决后如何忽略Git中的文件模式更改?

我正在认真地停止编码,成为一名木匠。 这个问题已经让我强调了很长一段时间,似乎没有任何明确的解决scheme,除了强迫非Windows机器使用文件权限窗口似乎造成的。

我们从这个场景开始。 我有2个开发机器,一个运行Windows7,另一个Mac OSX。 他们都使用Eclipse和EGit,并且都从远程仓库克隆了相同的项目。 这是相似之处的结束,因为我的Windows机器有一个恶意的习惯,保留在本地回购644 (r-xr – r–)的文件模式,而在Mac上的模式默认为酷775 (rwxrwxr- -X)。

所以这个问题显然是文件权限 – GIT报告有文件由于文件模式的差异而改变,而不是实际的内容。 解决scheme似乎很明显,运行以下命令:

git config core.filemode false git config --global core.filemode false 

除了在提交和合并已解决的冲突以外 ,它们都像魅力一样工作。

例如,说Windows和Mac回收站上都存在文件A,B和C. 接下来,让我们在Mac机器上更改这3个文件的文件模式,以便开发人员可以编辑它们。 现在改变文件A中的一些内容。因为我们忽略了文件模式(感谢上面的命令),只有文件A将被提交和推送,准备好让Windows机器获取,合并和享受…

现在,我们再次在Mac Windows机器上编辑文件A,从而导致潜在的冲突,让Windows机器首先提交并推送文件A. 然后,当Mac用户提交对文件A的更改并从远程回购获取最新更改时,显然会产生冲突。

解决了Mac机上的冲突并将文件A添加回本地回购之后,提交该合并包括之前忽略的文件B和C,从而突出显示了我的问题! 为什么以前被忽略的文件被包含在这个合并提交中? 这似乎并不是一个专门的Mac / Windows问题,因为这个问题可以通过两种方法重新创build。

如果只有3个文件,这可能没有关系,但是我指的这个项目包含了数千个,而所有这些上下拉动都是疯狂的。 我错过了一些非常明显的东西吗 任何帮助将不胜感激!

因此,在比较Git的注释和变化时,试图使Windows和Mac OS机器相互喜欢,经过漫长而经常令人沮丧的运行之后,似乎只是Git本身的功能,这让我发疯,并更好地理解如何更好地使用Git似乎是最终的答案。

本来,我想知道如何继续忽略文件模式更改(Windows似乎喜欢更新自己的想法,什么权限和模式应该是),而我正在解决从其他人的文件更新创建的冲突。 简短的回答:你不能 。 这只是Git的工作方式。

那么,如何处理这种情况呢? 简短的回答:使用分支

在我使用Git的原始方式中,我一直在我的主分支上工作,我的本地回购 – 已经坏的想法 – 所有我的工作将在那里进行,所有的冲突解决方案也需要在那里处理,迫使所有的文件再次比较和所有的权限和文件模式出现问题。

通过分支,您可以在另一个分支上工作,提交到该分支,将更新提交给主分支,并在此之后将其他分支与您的主分支合并。 从远程回购突然间没有更多的冲突,你赢了!

命令做到这一点(从当前选定的分支创建分支):

 git branch newbranch 

结帐您的新分行:

 git checkout newbranch 

要将你的新分支与你的主分支合并(在你已经提交到你的新分支之后,先切换到主分支):

 git checkout master git merge newbranch 

希望这可以帮助别人! – 🙂

以及tbh,我不知道你是如何得出你的结论,因为明显的问题是混帐不忽略文件模式的变化。 这也发生在我们这里。

如果您设置了该标志,在某些情况下似乎没有任何区别,仍然使用文件模式来确定更改的文件。

那必须是git中的一个bug,还有什么可能呢?

可能你的答案没有解释的理由,所以我不认为这是正确的答案,这是一个解决方法。

正确的答案是git在不告诉不使用文件模式的时候,它明显地忽略了这一点,并且无论如何也这样做了。

你能否解释一下。