Git diff веток или фиксаций, показывающий обзор списка файлов в визуальном difftool, а затем выбираемый отдельный файл diff
tl;dr: Как я могу заставить свой пользовательский difftool открывать представление каталога / файла для ветви или фиксировать diff, чтобы я мог перейти в свой difftool в один файл diff и вернуться в список каталогов, чтобы выбрать следующую пару файлов? Использование git и Beyond Compare 4. (Переход назад и вперед из списка файлов в файл diff и обратно - это частично встроенная функция difftools).
Подробности:
Я работал над Git последние пару месяцев, и это отличный инструмент. Но мне было интересно, есть ли возможность решить функцию, которую я не нашел во время моих интернет-поисков по темам git. Сценарии чего-либо, чтобы получить подобное поведение, тоже подойдут. А может это встроенный или кто-то уже решил проблему?
Что я пытаюсь сделать?
Из моей прежней рабочей среды у меня была возможность выбрать просмотр различий в 2 проверки (коммитов). Это открыло список сравнения файлов / каталогов в моем специальном инструменте сравнения, и я увидел все файлы рядом. С одной стороны, коммит (или ветвь) № 1, а с другой стороны, коммит (или ветвь) № 2. Я мог бы выбрать пару файлов и увидеть разницу между двумя файлами и вернуться к списку каталогов / файлов (пользовательская функция difftool), когда закончил.
Что делает мой мерзавец?
В настоящее время, если я делаю diff с участием нескольких файлов, таких как
git difftool branch1..branch2
git bash открывает один файл за другим. Запрашиваемая для каждого в отдельности. Это немного неприятно, если есть много файлов, и если я не уверен, на что я хочу посмотреть заранее, или если я просто хочу получить обзор. И я бы предпочел видеть это в моем difftool.
Ann.: Более изощренная функция - возможность видеть 3-х разностный файл, включая общего предка файла (но не в представлении file / directory).
Информация:
Я работаю на платформе Windows, поэтому, если вы знаете решение для Linux или его уже настроили, пожалуйста, дайте мне некоторую информацию о внутренних компонентах Linux.
Возможно, инструменты, которые я использую, уже имеют "секретную" функцию? Это Visual Studio 2013 и Sourcetree в дополнение к командной строке git bash.
если уместно: я использую difftools Beyond Compare 4 и Sourcegear DiffMerge.
1 ответ
Я не знаю, на что я смотрел все время. Я просто наткнулся на решение, когда сделал несколько различий и перечитал страницу справки для git diff-tool, чтобы запомнить параметр. Обычно я читаю только страницу справки git diff, потому что они имеют одинаковые параметры.
Там я увидел параметр -d и попробовал.
Решением для двухстороннего сравнения с папками и файлами является команда:
git difftool -d branch1 branch2
git difftool --dir-diff branch1 branch2
или же
git difftool -d commit1 commit2
затем Beyond Compare открывается в режиме diff каталога, и я вижу различия между ветвями или фиксацией.
Хотя вы можете видеть только измененные файлы, не включая неизмененные. Но это не совсем недостаток.
В файле справки в git-difftool говорится:
-d
--dir-diff
Copy the modified files to a temporary location and perform a
directory diff on them. This mode never prompts before launching the diff tool.