Прямые diff локальные файлы для фиксации в Git - PullRequest
1 голос
/ 14 января 2020

Я хочу запустить diff между коммитом и моими локальными файлами, используя внешний diff-инструмент, без временных файлов для моего локального. Я запускаю git на Windows.

В настоящее время я пытаюсь это сделать с помощью: git difftool --dir-diff <commit> -- <path_to_local_dir>. Этот подход работает нормально, однако <path_to_local> затем представляется папкой temp в AppData. Для большинства случаев это нормально.

Однако, используя внешний инструмент сравнения (в моем случае BeyondCompare4), инструмент сравнения предоставляет функциональность «Копирование», определяя, что c изменяется с <commit> на <path_to_local>. Вот тут-то и возникает моя проблема. Если Git принудительно использует папки temp для локальных файлов, такое поведение "Копирование" бесполезно, поскольку оно изменяет только временные файлы.

Я знаю Я мог бы написать скрипт, который копирует содержимое temp в мои локальные файлы после сохранения, но я ищу более элегантное решение.

В качестве идентификатора Mercurial поддерживает запрашиваемое поведение по умолчанию (создает временные файлы только тогда, когда локальные файлы еще не существуют)

Итак, вкратце, есть ли способ заставить git difftool фактически использовать локальные файлы вместо создания и использовать временные файлы для моих локальных файлов, которые уже существуют?

Редактировать: Word Usage

1 Ответ

1 голос
/ 14 января 2020

Как и во многих других случаях, я задумался над этой проблемой.

Получается, как указано в документации git difftool , git difftool по умолчанию использует символические ссылки для файлы в рабочем дереве.

Полное объяснение символов c ссылок: здесь . Краткое объяснение состоит в том, что если вы измените символьную ссылку c на файл, вы фактически и фактически измените этот файл.

При Windows проблема становится немного более неясной, поскольку Git ' Поведение по умолчанию --no-symlinks, но конечный результат должен быть таким же.

Краткий ответ: просто нажмите Сохранить в файле temp . Изменения должны появиться в ваших локальных файлах.

...