Git - изменения, внесенные в meld (как в difftool), не сохраняются

Я следил за ответом Йорга В. Миттага в этом посте и настроил meld как difftool в моем мерзавце. Теперь я могу отлично просматривать и сравнивать различия файлов в разных ветках с помощью этой команды:

git checkout branch1
git difftool branch1:file.f90 branch2:file.f90

Я выполнил указанную выше команду, внес и сохранил изменения в meld. Однако, когда я проверяю файл, используя:

emacs file.f90

Изменения, которые я сделал ранее в meld, вообще не сохраняются. Я не понимаю, почему это так; Я, должно быть, не совсем правильно настроил meld как инструмент сравнения. Может ли кто-нибудь помочь мне с этой проблемой? Спасибо!!


person user3238512    schedule 26.01.2014    source источник


Ответы (3)


Поскольку вы явно указали ветки обоих файлов для сравнения, meld работает с временными копиями обоих файлов. Попробуйте просто указать имя невыбранной ветки: file; это должно заставить meld сравнить временную копию данного ветвления: файл с извлеченным файлом с тем же именем.

person Dipstick    schedule 26.01.2014

Чтобы избежать необходимости указывать имя файла дважды, используйте следующее:

git difftool branch -- file

Это сравнит branch:file с file в рабочем дереве.

Кроме того, чтобы различать все рабочее дерево с branch, используйте:

git difftool --dir-diff branch

Как упоминалось в других ответах, если вам нужно различать branch с other_branch (некоторая ветвь, отличная от того, что в настоящее время проверено), вы должны сначала проверить other_branch, прежде чем использовать приведенные выше команды.

person Mark    schedule 14.07.2017
comment
Отличный ответ @Mark, это самая простая команда для выполнения этой задачи. Спасибо! - person Gabriel; 07.03.2018
comment
примечание: когда я использовал git difftool -t --dir-diff branch ., и я изменил файлы из meld в рабочем каталоге и сохранил их, git (в том же каталоге, но в другом терминале) НЕ сообщал о НИКАКИХ изменениях с git status, пока ПОСЛЕ закрытия meld! (это для git / meld внутри оболочки MSYS2 в Windows 10) - person sdbbs; 21.06.2019

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

В твоем случае:

git checkout branch1
git difftool branch2:file.f90 file.f90

В качестве альтернативы вы можете сравнить всю ветку с рабочим каталогом и также сохранить свои изменения. Я предоставил более подробную информацию об этом здесь: https://stackoverflow.com/a/22535996/2178047

person Piotr Jurkiewicz    schedule 23.03.2014