我正在通过一个代码库并修复空白怪异并且通常会修正缩进等等,我想确保我没有无意中进行任何其他更改,所以我在git diff -w显示所有已更改文件的差异而忽略空格差异.问题是,这实际上并没有忽略所有的空白差异 - 至少我认为只是空白差异.例如,在以下输出中git diff -w,
-"Links":
-{
-
- "Thermal":
-
-{
-
+ "Links": {
+ "Thermal": {
Run Code Online (Sandbox Code Playgroud)
你可以看到我只有
这个问题看起来似乎可能首先提供答案,但它处理两个特定文件之间的差异,而不是两个特定提交之间的差异.通过搜索发现的其他一切也是一个死路一条.例如,这个问题是关于合并,而不是显示差异,这个问题涉及显示单词级差异,等等.
在使用git时,空白对我来说是一种可怕的痛苦.
git config apply.whitespace=strip
Run Code Online (Sandbox Code Playgroud)
似乎会增加你获得冲突的机会(当你删除不需要的空格,然后其他合作者将剥离的空白视为对其提交的更改?)
我过去曾尝试过其他一些配置apply.whitespace,也许其他配置中的一个可以解决这个问题,或者可能还有其他设置来处理我刚才没有遇到的空白,但我还没有找到明确的如何到达我想要的地方.
我从不想在空白上再发生冲突.如果另一个提交者改变了空格,或者我改变了空格然后必须合并我自己的冲突,我真的不想知道它.如果有人通过更改空格将我的代码从K&R样式更改为One True Brace样式,我更喜欢git允许空白设置赢得而不必看到它的冲突.我只是不太关心空白想要看到它的冲突.
所以......有什么方法可以配置git来做到这一点?
如果它有任何区别,这是我的git版本,以及我当前的配置:
tchalvak:~/ninjawars$ git --version
git version 1.6.0.4
tchalvak:~/ninjawars$
git config --list
color.branch=auto
color.diff=auto
color.status=auto
color.branch.current=yellow reverse
color.branch.local=yellow
color.branch.remote=green
color.diff.meta=yellow bold
color.diff.frag=magenta bold
color.diff.old=red bold
color.diff.new=green bold
color.status.added=yellow
color.status.changed=green
color.status.untracked=cyan
gui.recentrepo=/home/tchalvak/zd/htdocs/cms
apply.whitespace=strip
user.name=****
user.email=****
alias.co=checkout
github.user=tchalvak
github.token=****
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=...@github.com:tchalvak/ninjawars.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
Run Code Online (Sandbox Code Playgroud) 有没有办法告诉SourceTree在合并期间总是忽略空格"冲突"?像命令行调用的东西:
git merge -Xignore-space-change
Run Code Online (Sandbox Code Playgroud)
我目前正处于一个非常复杂的git合并中,我有很多冲突.冲突是关于两个Ada源文件.
我想进行合并,忽略空格更改和大小写更改(因为Ada语言不区分大小写).你知道是否有办法告诉git在合并之前忽略某些变化?
我的解决方案目前是在合并之前在两个分支上运行GNAT漂亮打印,但如果git中包含一个通用解决方案,那将对我有很大帮助.