My diff contains trailing whitespace - how to get rid of it?

前端 未结 6 1981
孤街浪徒
孤街浪徒 2020-12-30 19:20

I\'ve tried editing a php file in TextWrangler with line endings set to Unix, in NetBeans, and in vim. When I save the diff to a patch and then try to apply it, it gives whi

相关标签:
6条回答
  • 2020-12-30 19:24

    git apply --reject --whitespace=fix mychanges.path

    0 讨论(0)
  • 2020-12-30 19:28

    Many times i have faced such issues when my team mate works on Linux/Windows or uses git send-email.

    I always used to follow below command.

    git apply -3 --whitespace=fix yourpatch.patch
    

    or

    git am -s -3 --whitespace=fix yourpatch.patch
    

    -3 option will try three-way merge and it will help to solve other issues also.

    0 讨论(0)
  • 2020-12-30 19:31

    I think the question of how to cope with the whitespace has been adequately answered, but you asked where it came from. You mentioned ^M at the ends of lines: that’s how Git shows Windows line endings. Maybe try running dos2unix on your source files before creating patches, or use an editor which maintains the original line endings.

    0 讨论(0)
  • 2020-12-30 19:32

    Are you sure those are hard errors? By default, git will warn about whitespace errors, but will still accept them. If they are hard errors then you must have changed some settings. You can use the --whitespace= flag to git apply to control this on a per-invocation basis. Try

    git apply --whitespace=warn patchname.patch
    

    That will force the default behavior, which is to warn but accept. You can also use --whitespace=nowarn to remove the warnings entirely.

    The config variable that controls this is apply.whitespace.


    For reference, the whitespace errors here aren't errors with your patch. It's a code style thing that git will, by default, complain about when applying patches. Notably, it dislikes trailing whitespace. Similarly git diff will highlight whitespace errors (if you're outputting to a terminal and color is on). The default behavior is to warn, but accept the patch anyway, because not every project is fanatical about whitespace.

    0 讨论(0)
  • 2020-12-30 19:39

    the one line solution is:

    emacs <filename> -f delete-trailing-whitespace -f save-buffer -f kill-emacs
    

    source: https://wiki.gnome.org/Projects/GnomeShell/Development/WorkingWithPatches

    0 讨论(0)
  • 2020-12-30 19:40

    Try patch -p1 < filename.patch

    0 讨论(0)
提交回复
热议问题