Когда я делаю git diff
, он пытается запустить мой инструмент diff с файлами, которых не существует. Я предполагаю, что он получает последнюю версию измененного файла .gitignore
и копирует его во временный файл. Так я вижу, что запуск:git diff пытается сравнить файлы, которых не существует
"C:\Program Files\Git\usr\bin\diff.exe" .gitignore C:/temp/D4Sgyb_.gitignore 55f1.... 100644 .gitignore 000.... 100644
Но дифф инструмент жалуется, это правильно, что C:/temp/D4Sgyb_.gitignore
не существует. Не создается ли оно слишком рано?
Обычно 'git diff' делает свой собственный внутренний diff, но если вы * говорите *, что он использует какую-то другую программу, он вызывает этот« внешний »diff с семью аргументами: * path old-file old-hex old-mode new -file new-hex new-mode *. Это, по-видимому, начало внешнего разлома. См. Https://www.kernel.org/pub/software/scm/git/docs/git.html#_git_diffs – torek
Но, по-видимому, он не создает временный файл, который он передает внешнему инструменту. – Marc
Интересно. В документах упоминается (и код написан для этого), что Git удалит временный файл, как только закончится внешняя программа, т. Е. Выйдет, и процесс будет собран Git. Я не «делаю» Windows, но, возможно, что-то делает эквивалент «двойной вилки» Unix/Linux? Или это просто ошибка в Windows Git, не замечая, что он никогда не смог создать временный файл. :-) – torek