我们可以使用某些类型的忽略空格来做差异:
1)git diff --ignore-space-at-eol
#忽略EOL中的空白变化。
2)git diff --ignore-space-change
/ git diff -b
#忽略空白量的变化。
3)git diff --ignore-all-space
/ git diff -w
#全空白忽略
我们可以做到
git apply --ignore-whitespace
\ git apply --ignore-space-change
#在应用补丁时忽略whitesapces
但是如何排除空格的文件从git add *
改变?
这些解决方案对我不起作用:
1)
git diff -w --no-color | git apply --cached --ignore-whitespace
- 它有时会写入错误,并且不会将新文件添加到跟踪中。
2)
git add `git diff -w --ignore-submodules |grep "^[+][+][+]" |cut -c7-`
- 它写错误并且什么也不做(可能是因为我有二进制文件,而不仅仅是文本文件)
P.S。:也许有办法用最后一次提交的文件替换文件(在EOF差异之前的末尾或空格和空格的空格差异)?
答案 0 :(得分:0)
这个问题的唯一真正解决方案是。
解决方案是使用特殊设置重新创建git存储库,然后从原始提交从一个结帐状态复制到此存储库。
来源不良存储库:
/家庭/用户/的TruePower
新的良好存储库:
/家庭/用户/ onepower
cd /home/user
rm -rf ./onepower
mkdir ./onepower
cd ./onepower
git init
# set style of lineendings to be autoconverted to Linux/Unix LF
#git config core.autocrlf true # uncomment this if you prefer Windows CRLF style
git config core.autocrlf input # comment this if you prefer Windows CRLF style
# set trailing whitespace (and other similar) to ignore
git config core.whitespace \
trailing-space,space-before-tab,indent-with-non-tab
# you can use git config --global ... if you want global settings changing.
cd ../truepower
git log
提交cccc
提交bbbb
提交aaaa
cd ../truepower
git checkout aaaa
cd ../onepower
rm -rf ./*
cp -a ../truepower/* ./
git add -A
git commit -m "fixed aaaa"
cd ../truepower
git checkout bbbb
cd ../onepower
rm -rf ./*
cp -a ../truepower/* ./
git add -A
git commit -m "fixed bbbb"
cd ../truepower
git checkout cccc
cd ../onepower
rm -rf ./*
cp -a ../truepower/* ./
git add -A
git commit -m "fixed cccc"
现在你可以删除旧的错误../truepower并使用新的../onepower git存储库。
顺便说一句,在此之后,您将不会遇到此存储库的问题,文件末尾的空格更改,字符串的末尾,部分位于字符串的开头。但当然,字符串中间的空格变化将被解释为变化。
在http://git-scm.com/book/en/Customizing-Git-Git-Configuration#Formatting-and-Whitespace
的帮助下找到解决方案答案 1 :(得分:0)
将以下内容添加到.gitconfig
:
adduntracked=!git add $(git ls-files -o --exclude-standard)
Add only non-whitespace changes:
addnows = !git diff -U0 -w --no-color -- \"$@\" | git apply --cached --ignore-whitespace --unidiff-zero "#"
两者在一起:
addnewnows=!git add $(git ls-files -o --exclude-standard) && git diff -U0 -w --no-color -- \"$@\" | git apply --cached --ignore-whitespace --unidiff-zero "#"