$ git ls-files --eol
# list all crlf
$ git ls-files --eol | grep '/crlf'
# list all lf which not been controlled by gitattributes file
$ git ls-files --eol | grep -E '[iw]/lf' | grep -v -E 'attr/.+eol='
or
$ find . -type f -exec sh -c "file {} | grep 'with CRLF'" \;
# or
$ find . -type f -follow -print0 | xargs -0 file | grep 'with CRLF'
# or get file list
$ find . -type f -exec sh -c "file {} | grep 'with CRLF'" \; | awk -F':' '{print $1}'
list config
get all config : --get-all
$ git config --show-origin --show-scope --get-all core.autocrlf
global file:/home/marslo/.gitconfig false
local file:.git/config input
get active config : --get
$ git config --show-origin --show-scope --get core.autocrlf
local file:.git/config input
core.eol
$ git config --show-origin --show-scope --get core.eol
global file:/home/marslo/.gitconfig lf
$ git config --show-origin --show-scope --get-all core.eol
global file:/home/marslo/.gitconfig lf
core.safecrlf
$ git config --show-origin --show-scope --get-all core.safecrlf
global file:/home/marslo/.gitconfig warn
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
set in GUI
checkout Windows-style, commit Unix-style line endings:
$ git config --global core.autocrlf true
- Text files checked-out from the repository that have only `LF` characters are normalized to CRLF in your working tree; files that contain `CRLF` in the repository will not be touched
- Text files that have only `LF` characters in the repository, are normalized from CRLF to LF when committed back to the repository. Files that contain CRLF in the repository will be committed untouched.
Checkout as-is, commit Unix-Style line endings:
$ git config --global core.autocrlf input
- Text files checked-out from the repository will keep original `EOL` characters in your working tree.
- Text files in your working tree with `CRLF `characters are normalized to `LF` when committed back to the repository.
Checkout as-is, commit as-is:
$ git config --global core.autocrlf false
- `core.eol` dictates `EOL` characters in the text files of your working tree.
- `core.eol = native` by default, which means Windows `EOLs` are `CRLF` and *nix `EOLs` are `LF` in working trees.
- Repository gitattributes settings determines `EOL` character normalization for commits to the repository (default is normalization to `LF` characters).
eol
This attribute sets a specific line-ending style to be used in the working directory. It enables end-of-line conversion without any content checks, effectively setting the text attribute. Note that setting this attribute on paths which are in the index with CRLF line endings may make the paths to be considered dirty. Adding the path to the index again will normalize the line endings in the index.