git status忽略换行和空格更改

时间:2020-07-29 04:53:02

标签: git git-status

我目前在markdown文件中保存我的笔记,但是如果打开现有文件,我使用的编辑器(marktext)会添加新的空行。

git跟踪了此新行的添加,并且git不断向我显示这些文件为修改后的文件。有没有一种方法可以配置git在执行git status时不跟踪这些变化,例如换行和尾随空格?因为当我对这些特定文件执行git diff --ignore-all-space --ignore-blank-lines <path-to-file>时,它根本没有显示任何更改。

谢谢。

2 个答案:

答案 0 :(得分:2)

我不知道如何配置git以执行您想要的操作。也许这是不可能的(但我敢肯定人们会证明我错了)。但是至少您可以稍微修改一下,然后拥有所需的内容。

您可以创建一个小脚本来检查git diff --ignore-all-space --ignore-blank-lines是否不返回任何内容或什么,然后输出标准nothing to commit, working tree clean字符串或执行实际的git status

#!/bin/bash

diff=$(git diff --ignore-blank-lines --ignore-all-space)

if [[ -z $diff ]];
then
    echo -e "On branch $(git branch --show-current)\nnothing to commit, working tree clean"
else
    git status
fi

然后,如果将其放在全局/本地.gitconfig

中,则可以像git命令一样调用此脚本
# git config stuff
[alias]
    nw-status = "!p() { bash ~/path/to/script/git-nw-status.sh ; }; p"

注意,这并不是您想要的。如果您确实有非空白非换行符的更改,那么您将看到git status,但是通过与git diff进行检查,您还必须使用其他命令来忽略空白和换行符。这可能给您带来不便。

答案 1 :(得分:1)

您可以设置clean content filter driver as here,它将自动删除git diff / git commit上那些尾随的空行。

https://git-scm.com/book/en/v2/images/clean.png Keyword Expansion”中“ ProGit book”部分的图片

干净的脚本会trim any trailing empty lines

# Delete all trailing blank lines at end of file (only).
sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' file
相关问题