Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 带忽略空白/行尾的樱桃形拾取_Linux_Git_Line Endings - Fatal编程技术网

Linux 带忽略空白/行尾的樱桃形拾取

Linux 带忽略空白/行尾的樱桃形拾取,linux,git,line-endings,Linux,Git,Line Endings,有没有办法告诉git cherry pick使用重新规范化合并策略?我不确定-X选项是否有效 我有一堆提交,它们似乎假定一种类型的行结束,我正试图将它们应用于假定另一种类型的分支。不太开心…因此,为了完整起见,答案是忽略所有空间合并策略起作用: git cherry-pick -X ignore-all-space <commit-id> git cherry pick-X忽略所有空间 这将使您可以毫不费力地在文件有windows行结尾时选择提交到有unix文件结尾的版本上。我知

有没有办法告诉git cherry pick使用
重新规范化
合并策略?我不确定
-X
选项是否有效


我有一堆提交,它们似乎假定一种类型的行结束,我正试图将它们应用于假定另一种类型的分支。不太开心…

因此,为了完整起见,答案是
忽略所有空间
合并策略起作用:

git cherry-pick -X ignore-all-space <commit-id>
git cherry pick-X忽略所有空间

这将使您可以毫不费力地在文件有windows行结尾时选择提交到有unix文件结尾的版本上。

我知道这个问题已经很老了,但添加这个答案是因为这是谷歌搜索“git cherry pick ignore whitespace”的第一篇帖子

尽管
-X ignore all space
可以正常工作,但如果cherry pick without ignore space选项存在一些冲突,则必须手动检查提交。(或者在樱桃采摘时使用
--no commit
,然后使用
git diff--staged
查看它)

在某些情况下,
-X 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
    Change from theirs, indent level 1
Indent level 0
这里发生的事情是,它们更改了逻辑,因此以前的代码(缩进级别0)应该缩进到级别1,但没有,因为您指定了ignore-all-space选项

因此,tl;博士是:

  • -X ignore all space
    选项也会忽略前导空格,这在某些情况下和Python等语言中可能会造成麻烦
  • 所以你必须在使用该选项后手动查看,或者
  • 改为使用
    -X忽略下线处的空格
    ,并手动处理前导空格冲突
  • 但是不要停止阅读,因为这些选项不是问题的主要原因——问题的核心不是每个人都遵守相同的空格规则

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


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

    我想我可能已经回答了我自己的问题
    -X renormalize
    不工作,但
    -X ignore all space
    正在执行此任务。。。策略在我的案例中也很有用。即,
    -X在下线忽略cr
    。().