有没有办法告诉git cherry-pick使用renormalize合并策略?我不确定-X选项是否有效。
我有一堆提交,它们似乎假设一种类型的行结束,我正在尝试将它们应用于假设另一种类型的分支。玩得不开心..。
发布于 2014-11-20 21:53:46
因此,为了完整性,答案是ignore-all-space合并策略完成了这项工作:
git cherry-pick -X ignore-all-space <commit-id>当文件有windows行结尾时,这会让你毫不费力地选择提交到有unix结尾的版本。
发布于 2018-11-05 15:34:39
我知道这个问题很陈旧,但添加这个答案是因为这是谷歌搜索"git cherry-pick忽略空格“的第一篇文章。
即使-X ignore-all-space运行得很好,如果没有忽略空格的樱桃选择选项有一些冲突,你也必须手动检查提交。(或者在挑剔的时候使用--no-commit和git diff --staged查看它)
在某些情况下,-X ignore-all-space选项看起来不错,但有些缩进是错误的。
例如,假设您在没有使用ignore-all-space的情况下与前导空格有一些合并冲突,如下所示:
Change from theirs, Indent level 1(no conflict with/out whitespace)
<<<<< HEAD
Indent level 0
=====
Indent level 1 without any code change
>>>>> cherry-picked commit在这种情况下,-X ignore-all-space没有显示冲突,但实际的提交将如下所示:
Change from theirs, indent level 1
Indent level 0这里发生的事情是,他们改变了逻辑,所以前面的代码(缩进级别0)应该缩进到级别1,但它没有,因为您指定了ignore-all-space选项。
所以tl;dr是:
-X ignore-all-space选项还会忽略前导空格,这在某些情况下和Python.-X ignore-space-at-eol,并手动处理前导空格冲突。但是不要停止阅读,因为这些选项并不是这个问题的主要原因--这个问题的核心是不是每个人都遵守相同的空格规则。
对于前导空格和尾随空格:使用linting工具、IDE或其他任何工具来遵守相同的规则。这不是特定于操作系统的,如果您的团队努力让其他开发人员的生活变得更容易,就可以遵循这一点。
对于eol更改:这是特定于操作系统的,但幸运的是,git支持用于多平台开发环境的core.autocrlf和core.eol。有关更多详细信息,请参阅git-scm。
https://stackoverflow.com/questions/24782558
复制相似问题