Sourcetree在合并时更改提交

时间:2017-08-21 00:43:47

标签: git merge atlassian-sourcetree

我使用SourceTree来管理我的git。我想要做的是将一个分支与变更(master-k)合并到master中。

表示,在分支的每次提交中,一切看起来都很好,但是在合并期间,整个文件都会发生变化。

注意: master-k分支来自mac上的另一个用户,可能已用于合并Pull请求。我在Windows 10上使用Sourcetree。

这里是提交分支的屏幕截图。请注意,显示的差异具有单独的行: enter image description here

这是合并期间的屏幕截图(有解决冲突): enter image description here

你可以在上面看到,差异基本上是style.css中的所有

我尝试了几件事:

  • 更新git global config以忽略EOL
  • 将小设置下拉菜单更改为"忽略空格" enter image description here

过去忽略空格对我来说是一个问题 - 它在整个文件上做了我的差异。一旦我找到这个复选框,一切都很好。我确定现在已经关闭,但这次合并仍然给我一个问题。

2 个答案:

答案 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

输出完美!只显示实际的行差异,而不是整个文件。

希望这有助于某人!