Я знаю, что могу увидеть разницу между HEAD и текущим состоянием meld .
. Но как я могу увидеть различия между ветвями, например master
и devel
со смесью?
На данный момент я делаю следующие шаги:
- Переименовать папку рабочей копии
напримерmv /projectA /projectA_master
) - Клонировать проект снова
git clone url
- Переключиться на
devel
филиал
cd projectA && git -b devel origin/devel
- Посмотреть различия с сочетанием
meld /projectA_Master projectA
Разве нет более простого способа получить тот же результат в слиянии? Мне это нужно только для просмотра изменений, а не для слияния.
Ответы:
Я также обнаружил, что эта проблема раздражает, поэтому я создал git meld, который позволяет более удобно использовать произвольные коммиты для рабочего дерева или рабочей области. Вы можете найти его по адресу https://github.com/wmanley/git-meld . Это немного похоже на сценарий Марка, но он работает для сравнения любого произвольного коммита, промежуточной области или рабочего каталога с любым другим. Если одна из вещей, с которыми вы сравниваете, - это рабочее дерево, то оно также доступно для чтения и записи, поэтому вы не потеряете свои изменения.
источник
Коротко и сладко:
Это настраивает Git для использования
meld
в качестве инструмента сравнения. (Вам не нужно указывать аргументы командной строки, поддержкаmeld
встроена в Git.)Затем, если вам нужен графический diff вместо текстового, вы просто вызываете
git difftool
вместоgit diff
(они оба принимают одинаковые аргументы). В твоем случае:Обновление: Если вы не хотите , чтобы один-файл-на-времени диф, но вместо этого хотите «подкаталог» вид использования сливаться со всеми изменениями между двумя ветвями, отметьте
-d
или--dir-diff
опциюgit difftool
. Например, когда я нахожусь на ветви XYZ и хочу увидеть, что отличается между этим и ABC ветви, я запускаю это:источник
Начиная с git v1.7.11, вы можете использовать
git difftool --dir-diff
для выполнения директории diff. Который довольно хорошо работает со скриптами без https://github.com/wmanley/git-meld .Настроить Git
Используй это
Для macOS
источник
Ctrl+s
- правую часть, ваш файл изменяется.Важно сказать, что
git difftool -d
вы можете редактировать свои рабочие файлы в Meld и сохранять их . Для этого вам нужно сравнить какую-то ветку с вашим текущим рабочим деревом, например:Meld покажет, что и левая, и правая директории находятся в / tmp. Однако файлы в правильном каталоге на самом деле являются символическими ссылками на ваши файлы в текущем рабочем каталоге (не относится к Windows). Таким образом, вы можете редактировать их прямо в Meld, и когда вы сохраните их, ваши изменения будут сохранены в вашем рабочем каталоге.
Еще более интересный вариант - сравнение текущей рабочей директории с тайником. Вы можете сделать это, просто набрав:
Затем вы можете перенести некоторые изменения из stash (левое окно) в вашу текущую рабочую копию (правое окно), не используя
git stash pop/apply
и избегая надоедливого разрешения конфликтов, которое может быть вызвано этими командами.Я думаю, что это может значительно улучшить рабочий процесс с тайниками. Вы можете постепенно переносить изменения из хранилища в рабочую копию и фиксировать их один за другим, внося некоторые другие изменения, если хотите.
источник
Хотя из других ответов кажется, что на данный момент нет способа сделать это непосредственно в репозитории git, легко (благодаря ответу на другой вопрос :)) написать скрипт, который будет извлекать деревья двух коммитов. во временные каталоги и запустите на них соединение, удалив оба каталога при выходе из соединения:
http://gist.github.com/498628
Конечно, вы потеряете любые изменения, сделанные с помощью meld, но я думаю, что это очень удобно для быстрого обзора различий.
источник
Я думаю, что простой способ сделать это с помощью
git reset --soft
:Цель: сравнить различия между branch_a и branch_b с meld
источник
В git V1.7.9 вы можете сравнить два коммита без командной строки:
Вы должны настроить параметры редактирования в «git gui»: «Использовать инструмент слияния: meld».
Запустите gitk , выберите коммит, щелкните правой кнопкой мыши другой коммит> « diff this -> selected ». Под 'patch' щелкните правой кнопкой мыши файл> " external diff ".
meld запустится и отобразит все еще выбранный первый коммит с правой стороны.
источник
Для Meld на macOS добавьте это в свой файл,
~/.gitconfig
как рекомендует разработчик приложения macOS, yousseb :Вы можете опустить
merge
конфиги, если хотите.@ GutenYe ответ не сработал для меня из-за автоматического побега и / или чего-то с
zsh
.источник