Git визуальная разность между ветвями

Этот ответ отлично подходит для визуального различия между двумя файлами, которые отмечены в git: Как просмотреть 'git diff' с помощью программы визуального сравнения?

Однако, я бы хотел увидеть визуальный разницу между двумя ветвями. Пока что лучший вариант:

git diff --name-status master dev

который не очень информативен и не очень визуальен.

Есть ли что-нибудь лучше?

Ответ 1

Используйте git diff с range.

git diff branch1..branch2

Это будет сравнивать советы каждой ветки.

Если вы действительно хотите использовать какое-то программное обеспечение GUI, вы можете попробовать что-то вроде SourceTree, которое поддерживает Mac OS X и Windows.

Ответ 2

Чтобы увидеть визуальные различия всех различий между двумя ветвями, мне нравится объединять две ветки - БЕЗ фиксации слияния - и затем использовать git gui или git Extensions, чтобы получить обзор различий.

Командная строка Git для слияния без коммитов:

git checkout branchA
git merge --no-commit --no-ff branchB

Затем, когда вы закончите, вы можете отменить слияние с

git merge --abort

(h/t к @jcugat для комментария)

Ответ 3

Если вы используете Intellij Idea IDE, вы можете просто использовать опцию сравнения в ветке.

enter image description here

Ответ 4

Вы также можете сделать это с помощью gitk.

> gitk branch1 branch2

Сначала нажмите на кончик ветки1. Теперь щелкните правой кнопкой мыши на кончике ветки2 и выберите Diff this- > selected.

Ответ 5

Для тех из вас, кто работает в Windows с помощью TortoiseGit, вы можете получить несколько визуальное сравнение с помощью этой довольно неясной функции:

  • Перейдите в папку, которую вы хотите сравнить.
  • Удерживайте shift и щелкните его правой кнопкой мыши
  • Перейдите в TortoiseGit → Обзор ссылки
  • Используйте ctrl для выбора двух ветвей для сравнения.
  • Щелкните правой кнопкой мыши свой выбор и выберите "Сравнить выбранные ссылки"

Источник: http://wikgren.fi/compare-diff-branches-in-tortoise-git-or-how-to-preview-changes-before-doing-a-merge/

Ответ 6

Если вы используете OSX или Windows 7+, Atlassian SourceTree работает очень хорошо для этого. Это бесплатно.

Вы можете видеть поэтапные изменения в настройке параллельной настройки, и вы легко сравниваете локальные с удаленными и любыми другими двумя ветвями. Когда выбрано несколько файлов, diff отображается как показано ниже:

enter image description here

Предполагая, что вы проверили ветвь функции, и вы хотите увидеть diff против "master", щелкните правой кнопкой мыши на ветке "master" и выберите "Diff to current"

К сожалению, похоже, что он будет доступен в дистрибутивах * nix в ближайшее время.

Ответ 7

Попробуйте "diffftool" (при условии, что у вас есть настройка инструментов diff) - см. https://www.kernel.org/pub/software/scm/git/docs/git-difftool.html

Я нашел статус имени для резюме, но difftool выполнит итерацию изменений (и параметр -d предоставит вам представление каталога), например

$ git difftool their-branch my-branch

Viewing: 'file1.txt'
Launch 'bc3' [Y/n]:
...

Или как @rsilva4, упомянутый в -d, и по умолчанию ваша текущая ветка просто - например. сравнить с мастером:

$  git difftool -d master..

... и да - есть много вариантов - https://www.kernel.org/pub/software/scm/git/docs/git-reset.html

Ответ 8

Если вы используете github, вы можете использовать веб-сайт для этого:

github.com/url/to/your/repo/compare/SHA_of_tip_of_one_branch... SHA_of_tip_of_another_branch

Это покажет вам сравнение двух.

Ответ 9

В GitExtensions вы можете выбрать обе ветки в сетке ревизий с нажатой клавишей Ctrl. Затем вы можете видеть файлы, которые отличаются между этими ветвями. Когда вы выберете файл, вы увидите diff для него.

Взято из здесь

Ответ 10

ОБНОВИТЬ

Mac: я сейчас использую SourceTree. Тщательно рекомендуется. Мне особенно нравится, как вы можете ставить/не ставить куски.

Linux: я имел успех с:

  • SmartGit
  • GitKraken
  • meld

Например, чтобы установить smartgit на Ubuntu:


Это делает работу:

git-diffall с инструментом различий GUI, таким как meld. Смотрите пункт 5 здесь:

http://rubyglazed.com/post/15772234418/git-ify-your-command-line

Здесь есть хороший пост о git и meld: http://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy

Ответ 11

Если вы используете Eclipse, вы можете визуально сравнить свою текущую ветку в рабочей области с другим тегом/веткой:

Eclipse workspace compare

Ответ 12

Вы можете использовать бесплатный P4Merge из Perforce, чтобы сделать это:

http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools

введите описание изображения здесь

Подробности об интеграции с Git можно найти здесь и здесь

но краткое изложение приведенных выше ссылок:

  • Поместите следующие биты в ~/.gitconfig, а затем вы можете сделать $ git mergetool и $ git difftool для использования p4merge
  • Обратите внимание, что $ git diff по-прежнему будет использовать встроенный просмотрщик встроенных различий по умолчанию:) (проверено с помощью Git версия 1.8.2)

Изменения для .gitconfig

[merge]
  keepBackup = false
    tool = p4merge
[mergetool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$REMOTE\"" "\"$PWD/$LOCAL\"" "\"$PWD/$MERGED\""
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[diff]
    tool = p4merge
[difftool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$REMOTE\"" "\"$LOCAL\""

Ответ 13

Если вы используете отличный редактор WebStorm, вы можете сравнить его с любой отраслью, которую хотите: Webstorm  git сравнить

Ответ 14

С функциональностью ядра Git вы можете многое сделать. Возможно, было бы неплохо указать, что вы хотели бы включить в визуальные различия. Большинство ответов сосредоточены на построчном различении коммитов, где ваш пример фокусируется на именах файлов, затронутых в данном коммите.

Один из визуальных элементов, который, похоже, не рассматривается, состоит в том, как увидеть коммиты, содержащиеся в ветвях (общие или уникальные).

Для этого видео я большой поклонник git show-branch; он разбивает хорошо организованную таблицу коммитов на ветку назад к общему предку. - чтобы попробовать его в репо с несколькими ветвями с расхождениями, просто наберите git show-branch и проверьте вывод - для записи с примерами см. Сравнение коммитов между ветвями Git

Ответ 15

Вот как можно увидеть визуальную разницу между целыми коммитами, в отличие от отдельных файлов, в Visual Studio (протестировано в VS 2017). К сожалению, он работает только для коммитов в пределах одной ветки: в "Team Explorer" выберите представление "Branches", щелкните правой кнопкой мыши по репо и выберите "View history", как показано на следующем рисунке.

enter image description here

Затем история текущей ветки появляется в основной области. (Там, где ветки, которые закончились как более ранние коммиты в текущей ветке, помечены метками.) Теперь выберите пару коммитов с помощью Ctrl-Left, затем щелкните правой кнопкой мыши и выберите "Compare Commits..." во всплывающем меню.

Дополнительную информацию о сравнении веток в мире Microsoft см. В этом вопросе о стековом потоке: Различия между ветками git, использующими Visual Studio.