Допустим вы смотрите такой дифф, в котором много изменений, но по факту логика не поменялась:
А можно срендерить такой дифф, который будет сделан на основе AST-деревьев старого и нового кода, и он уже понятней:
Сделать так можно утилитой difftastic:
Difftastic, a structural diff tool that understands syntax
Установить:
brew install difftastic
Подключить к гиту так:
git config --global diff.external difft
git config --global difftool.difftastic.cmd 'difft "$MERGED" "$LOCAL" "abcdef1" "100644" "$REMOTE" "abcdef2" "100644"'
git config --global difftool.prompt false
git config --global pager.difftool true
git config --global diff.tool difftastic
Использовать следующим образом. Допустим хочется ветку B замержить в ветку А (например, А — это master), причем ветка A может тоже уехать вперед по истории. Срендерить дифф между B и A можно так:
git diff A..B
Синтаксис: