首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用忽略空格/行尾的Cherry-pick

使用忽略空格/行尾的Cherry-pick
EN

Stack Overflow用户
提问于 2014-07-16 21:48:45
回答 2查看 9.3K关注 0票数 32

有没有办法告诉git cherry-pick使用renormalize合并策略?我不确定-X选项是否有效。

我有一堆提交,它们似乎假设一种类型的行结束,我正在尝试将它们应用于假设另一种类型的分支。玩得不开心..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-20 21:53:46

因此,为了完整性,答案是ignore-all-space合并策略完成了这项工作:

代码语言:javascript
复制
git cherry-pick -X ignore-all-space <commit-id>

当文件有windows行结尾时,这会让你毫不费力地选择提交到有unix结尾的版本。

票数 50
EN

Stack Overflow用户

发布于 2018-11-05 15:34:39

我知道这个问题很陈旧,但添加这个答案是因为这是谷歌搜索"git cherry-pick忽略空格“的第一篇文章。

即使-X ignore-all-space运行得很好,如果没有忽略空格的樱桃选择选项有一些冲突,你也必须手动检查提交。(或者在挑剔的时候使用--no-commitgit diff --staged查看它)

在某些情况下,-X ignore-all-space选项看起来不错,但有些缩进是错误的。

例如,假设您在没有使用ignore-all-space的情况下与前导空格有一些合并冲突,如下所示:

代码语言:javascript
复制
    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没有显示冲突,但实际的提交将如下所示:

代码语言:javascript
复制
    Change from theirs, indent level 1
Indent level 0

这里发生的事情是,他们改变了逻辑,所以前面的代码(缩进级别0)应该缩进到级别1,但它没有,因为您指定了ignore-all-space选项。

所以tl;dr是:

  1. -X ignore-all-space选项还会忽略前导空格,这在某些情况下和Python.
  2. 等语言中可能很麻烦,因此您必须在使用该选项后手动检查,或者...
  3. 改用-X ignore-space-at-eol,并手动处理前导空格冲突。

但是不要停止阅读,因为这些选项并不是这个问题的主要原因--这个问题的核心是不是每个人都遵守相同的空格规则。

对于前导空格和尾随空格:使用linting工具、IDE或其他任何工具来遵守相同的规则。这不是特定于操作系统的,如果您的团队努力让其他开发人员的生活变得更容易,就可以遵循这一点。

对于eol更改:这是特定于操作系统的,但幸运的是,git支持用于多平台开发环境的core.autocrlf和core.eol。有关更多详细信息,请参阅git-scm

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24782558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档