Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 225073
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T19:22:39+00:00 2026-05-11T19:22:39+00:00

Is it possible for git merge to ignore line-ending differences? Maybe I’m asking the

  • 0

Is it possible for git merge to ignore line-ending differences?

Maybe I’m asking the wrong question … but:

I tried uisng config.crlf input but things got a bit messy and out of control, specially when I applied it after the fact.

For one thing, applying this config after the fact doesn’t seem to affect files that were committed to the repository before applying this option. Another thing is that suddenly all commits now result in lots of annoying warning messages about CRLF being converted to LF.

To be honest, I don’t really care what line-ending is used, I personally prefer the Unix style \n, but whatever. All I care about, is for git merge to be a bit smarter and ignore the differences in line-endings.

Sometimes I have two identical files, but git would mark them as being in conflict (and the conflict is the whole file) simply because they use a different line ending character.

Update:

I found out that git diff accepts a --ignore-space-at-eol option, would it be possible to let git merge use this option as well?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T19:22:40+00:00Added an answer on May 11, 2026 at 7:22 pm

    Update 2013:

    More recent git versions authorize using merge with strategy recursive and strategy option (-X):

    • from "Git Merge and Fixing Mixed Spaces and Tabs with two Branches":
      git merge -s recursive -Xignore-space-at-eol
      

    But using "-Xignore-space-change" is also a possibility

    • Fab-V mentions below:
      git merge master -s recursive -X renormalize
      

    jakub.g also comments that the strategies work also with cherry-picking:

    git cherry-pick abcd123456 --strategy=recursive --strategy-option=renormalize 
    

    This works much better than ignore-all-space.


    Before Git 2.29 (Q4 2020), All "mergy" operations that internally use the merge-recursive machinery should honor the merge.renormalize configuration, but many of them didn’t.

    See commit 00906d6, commit 8d55225, commit 6f6e7cf, commit fe48efb (03 Aug 2020) by Elijah Newren (newren).
    (Merged by Junio C Hamano — gitster — in commit 4339259, 10 Aug 2020)

    merge: make merge.renormalize work for all uses of merge machinery

    Signed-off-by: Elijah Newren

    The ‘merge‘ command is not the only one that does merges; other commands like checkout -m or rebase do as well.

    Unfortunately, the only area of the code that checked for the "merge.renormalize" config setting was in builtin/merge.c, meaning it could only affect merges performed by the "merge" command.

    Move the handling of this config setting to merge_recursive_config() so that other commands can benefit from it as well.


    Original answer (May 2009)

    The patch for ignoring eol style has been proposed in June 2007, but it only concerns git diff --ignore-space-at-eol, not git merge.

    At the time, the question has been askeed:

    Should --ignore-space-at-eol be an option to git-merge ?
    Merges are where this functionality matters.
    What are the semantics of an auto-resolved merge with those options in effect — are they only used for rename detection, or do we, e.g., not flag conflicts with only whitespace changes ? And if we don’t, which version do we accept automatically ?

    Julio C Hamano was not exactly enthusiastic:

    This certainly is tempting, but I suspect that should be left to later rounds.
    I suspect that it would introduce a concept of two different kinds of diffs, one to be mechanically processed (i.e. use in merge with "git-merge-recursive", and apply with
    "git-am"), and another to be inspected by humans to understand.
    It often may be useful to munge the input for the latter case, even though the output from comparing munged input files may not be readily usable for mechanical application.

    The general idea, when it comes to git merge, is to rely on the third-party merge tool.

    For instance, I have setup DiffMerge to be the tool for Git merge, setting a ruleset which allow that merge tool to ignore eol for certain type of files.


    Setup on Windows, with MSysGit1.6.3, either for DOS or Git bash session, with DiffMerge or KDiff3:

    • set a directory into your PATH (here: c:\HOMEWARE\cmd).
    • add in that directory the script merge.sh (wrapper for your favorite merge tool)

    merge.sh:

    #!/bin/sh
    
    # Passing the following parameters to mergetool:
    #  local base remote merge_result
    
    alocal=$1
    base=$2
    remote=$3
    result=$4
    
    if [ -f $base ]
    then
        #"C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe" "$alocal" "$base" "$remote" -m --result="$result" --title1="Mine" --title2="Merging to: $result" --title3="Theirs"
    
        # for merge respecting eol, KDiff3 is better than DiffMerge (which will always convert LF into CRLF)
        # KDiff3 will display eol choices (if Windows: CRLF, if Unix LF)
        "C:/Program Files/KDiff3/kdiff3.exe" -m "$base" "$alocal" "$remote" -o "$result"
    else
        #there is not always a common ancestor: DiffMerge needing 3 files, BASE will be the result
        #"C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe" "$alocal" "$result" "$remote" -m --result="$result" --title1="Mine" --title2="Merging to: $result" --title3="Theirs"
        
        # KDiff3 however does know how to merge based on 2 files (not just 3)
        "C:/Program Files/KDiff3/kdiff3.exe" -m "$base" "$remote" -o "$result"
    fi
    
    • Declare your merge wrapper for Git

    Git config commands:

    git config --global merge.tool diffmerge
    git config --global mergetool.diffmerge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\"
    git config --global mergetool.diffmerge.trustExitCode false
    git config --global mergetool.diffmerge.keepBackup false
    
    • Check that autoCRLF is false

    git config at system level:

    git config ---system core.autoCRLF=false
    
    • Test that, when two lines are identical (but their eol chars), both DiffMerge or KDiff3 will ignore those line during a merge.

    DOS script (note: the dos2unix command comes from here, and is used to simulate a Unix eol-style. That command has been copied in the directory mentioned at the beginning of this answer.):

    C:\HOMEWARE\git\test>mkdir test_merge
    C:\HOMEWARE\git\test>cd test_merge
    C:\HOMEWARE\git\test\test_merge>git init
    C:\HOMEWARE\git\test\test_merge>echo a1 > a.txt & echo a2 >> a.txt
    C:\HOMEWARE\git\test\test_merge>git add a.txt
    C:\HOMEWARE\git\test\test_merge>git commit -m "a.txt, windows eol style"
    C:\HOMEWARE\git\test\test_merge>git checkout -b windows
    Switched to a new branch 'windows'
    C:\HOMEWARE\git\test\test_merge>echo a3 >> a.txt & echo a4 >> a.txt
    C:\HOMEWARE\git\test\test_merge>git add a.txt
    C:\HOMEWARE\git\test\test_merge>git commit -m "add two lines, windows eol style"
    C:\HOMEWARE\git\test\test_merge>git checkout master
    C:\HOMEWARE\git\test\test_merge>git checkout -b unix
    Switched to a new branch 'unix'
    C:\HOMEWARE\git\test\test_merge>echo au3 >> a.txt & echo au4 >> a.txt && echo au5 >> a.txt
    C:\HOMEWARE\git\test\test_merge>dos2unix a.txt
    Dos2Unix: Processing file a.txt ...
    C:\HOMEWARE\git\test\test_merge>git add a.txt
    C:\HOMEWARE\git\test\test_merge>git commit -m "add 3 lines, all file unix eol style"
    [unix c433a63] add 3 lines, all file unix eol style
    
    C:\HOMEWARE\git\test\test_merge>git merge windows
    Auto-merging a.txt
    CONFLICT (content): Merge conflict in a.txt
    Automatic merge failed; fix conflicts and then commit the result.
    
    C:\HOMEWARE\git\test\test_merge>git ls-files -u
    100644 39b4c894078a02afb9b1dfeda6f1127c138e38df 1       a.txt
    100644 28b3d018872c08b0696764118b76dd3d0b448fca 2       a.txt
    100644 3994da66530b4df80189bb198dcfac9b8f2a7b33 3       a.txt
    
    C:\HOMEWARE\git\test\test_merge>git mergetool
    Merging the files: a.txt
    
    Normal merge conflict for 'a.txt':
      {local}: modified
      {remote}: modified
    Hit return to start merge resolution tool (diffmerge):
    

    At this point (Hitting "return"), DiffMerge or KDiff3 will open, and you will see for yourself what lines are actually merged, and what lines are ignored.

    Warning: the result file will always be in Windows eol mode (CRLF) with DiffMerge…
    KDiff3 offers to save in one way or another.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is it possible to deploy a website using git push ? I have a
Is it possible to have 2 git repositories in one directory? I'd think not,
Possible Duplicate: How do I calculate someone's age in C#? Maybe this could be
I've been doing some reading on how both the git merge and git rebase
Possible Duplicate: Why not use tables for layout in HTML? Under what conditions should
Possible Duplicate: NAnt or MSBuild, which one to choose and when? What is the
Possible Duplicate: .NET - What’s the best way to implement a catch all exceptions
Possible Duplicate: What Ruby IDE do you prefer? I've generally been doing stuff on
Possible Duplicate: How does the Google Did you mean? Algorithm work? Suppose you have
Possible Duplicate: How do you send email from a Java app using Gmail? How

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.