`git difftool` не показывает добавленные файлы на Windows - PullRequest
0 голосов
/ 11 марта 2020

git difftool, похоже, запутался в Windows. Если был добавлен новый файл, Git отправляет «\. \ Nul» в качестве «левого» файла в инструмент сравнения.

Чтобы воспроизвести это:

{create a new file}
git add .
git difftool --staged

Теперь, WinMerge (или любой используемый вами просмотрщик) запускается, но сообщает, что левый путь ("\. \ Nul") недействителен.

Об этой проблеме несколько раз сообщалось на SO несколько лет. Например, это та же самая проблема:

Как заставить winmerge отображать diff для нового файла в git?

Однако принятое решение в Вышеупомянутый вопрос (и все остальные) просто не работает для меня. И теперь, когда мы находимся в 2020 году, есть ли официальное решение этой проблемы?

У Mercurial никогда не было этой проблемы. Он отправляет diff зрителю правильные пути и работает отлично. Я удивлен, столкнувшись с этой проблемой с Git.

1 Ответ

1 голос
/ 11 марта 2020

Git должен предоставить способ указать, что определенный файл не существует. Это происходит при создании или удалении файла.

При Unix, типичный способ указать компонент файла, которого нет в diff, - указать /dev/null. Однако Windows не указывает свои устройства в пределах определенного пути; вместо этого устройство NUL доступно по любому пути, где имя файла NUL.

Несмотря на то, что WinMerge говорит вам, это действительно допустимый путь, и он должен прекрасно работать в Windows , (Например, вы должны иметь возможность написать что-то вроде git diff --no-index \.\nul foo.c, где foo.c - это путь в вашем проекте, по приглашению CMD или PowerShell.) Если вы видите эту проблему, возможно, вы должны сообщить об этом в Система отслеживания проблем WinMerge .

...