我使用SourceTree来管理我的git。我想要做的是将一个分支与变更(master-k)合并到master中。
表示,在分支的每次提交中,一切看起来都很好,但是在合并期间,整个文件都会发生变化。注意: master-k分支来自mac上的另一个用户,可能已用于合并Pull请求。我在Windows 10上使用Sourcetree。
你可以在上面看到,差异基本上是style.css中的所有。
我尝试了几件事:
过去忽略空格对我来说是一个问题 - 它在整个文件上做了我的差异。一旦我找到这个复选框,一切都很好。我确定现在已经关闭,但这次合并仍然给我一个问题。
答案 0 :(得分:1)
看起来你在这里有两个不同的问题
如果您在Windows上,请确保将自动空白设置为输入或自动。取决于您是要保留Unix样式还是在工作目录中使用Windows样式。两者都将提交Unix风格的行结尾。
然后规范化你的行结尾以避免将来头痛。这是相当详细的记录,所以我不会在这里进入,但是this is a good guide。
请注意,更改diff样式不会影响磁盘上的文件或git执行合并的方式,它只会更改diff工具显示更改的方式。我通常建议将空格保持可见,因为它会显示您在哪里进行不必要的更改,这些更改可能会导致您以后发生冲突。
你的style.css文件是从sass代码编译的,所以从技术上讲它是一个工件,而不是代码。
是否将其包含在您的回购中主要取决于您的工作流程和部署过程。在理想的世界中,您可以在部署过程中编译CSS,而不是将工件存储在repo中。由于我们不是生活在一个理想的世界中,我只是简单地谈谈处理存储在回购中的文物所带来的怪异。
如果您有这样的工件,解析合并即使成功,也至少会破坏文件中的地图数据。只有在您开始生成CSS的缩小版本时,这才会复合。幸运的是,处理这个问题的方法很简单,并解决源代码的任何冲突,然后重新编译工件并将它们添加到提交中。
动作序列将运行如下:
git checkout master-k
git merge master
解决此处的代码冲突
npm run buildcssjob # or similar
测试所有内容
git add style.css
git commit
git checkout master
git merge [--no-ff] master-k
你已经完成了。
答案 1 :(得分:0)
向LightBender大声说出上面的第一个答案。我今天遇到了另一个类似的问题,导致我找到另一个原因,整个文件显示为差异。
相同的症状,不同的原因。
问题出现是因为我在Windows计算机上使用指南针。在Windows上,默认情况下不启用Unix行结尾。
我发现这个线程为我解决了它: https://github.com/Compass/compass/issues/949
解决方案是添加:
sass_options = {:unix_newlines => true}
到我的 config.rb 文件。然后使用
重新编译compass compile
输出完美!只显示实际的行差异,而不是整个文件。
希望这有助于某人!