Страницы

Поиск по вопросам

понедельник, 25 ноября 2019 г.

Как сравнить две ветки git?


Была у меня ветка develop, потом мне понадобилось сделать новую фичу и я создал ещ
одну ветку hotfix, и, помимо фичи, в этой ветке я делал еще что-то: Рефакторил общий код и что-то еще.

А теперь фича мне не нужна больше, и нужно удалить эту ветку.

Я хочу посмотреть, чем отличаются две эти ветки, чтобы вспомнить, насколько весомые правки я вносил в код.

Как это сделать?
    


Ответы

Ответ 1



Я хочу посмотреть чем отличаются две эти ветки $ git diff ветка1 ветка2 полезно бывает для начала посмотреть не сами отличия, а список отличающихся файлов: $ git diff --name-only ветка1 ветка2 и тот же список со статусом каждого файла (добавлен/удалён/модифицирован): $ git diff --name-status ветка1 ветка2 документация: man git-diff.

Ответ 2



Если вы находитесь в ветке hotfix введите команду: git diff develop Ещё можно воспользоваться визуальным клиентом, например TortoiseGit(Windows) ил gitg(Linux).

Ответ 3



Git предоставляет гибкие инструменты выбора диапазонов фиксаций и сравнивания веток. Для решения вашей задачи можно использовать синтаксис двух точек. Таким образом вы, по сути, просите Git включить в диапазон коммитов только те, которые достижимы из одной ветки, но не достижимы из другой. Для примера предположим, что ваша история выглядит вот так: Вы хотите посмотреть что находится в вашей экспериментальной ветке, которая еще н была слита в основную. Вы можете попросить Git отобразить в логе только такие коммиты используя запись master..experiment – она означает “все коммиты, которые доступны из ветки experiment, но не доступны из ветки master”. Для краткости и наглядности в этих примерах вместо настоящего вывода лога будут использоваться буквенные обозначения из диаграммы, расположенные в должном порядке: $ git log master..experiment D C Для просмотра изменений можно использовать аналогичную конструкцию с командой git diff: $ git diff master..experiment При этом можно использовать все стандартные опции для команд git log и git diff конструкция с двумя точками просто позволяет указать диапазон коммитов, которые должны быть отображены. Другие способы указания диапазона комиттов Множество точек Запись с двумя точками полезна как сокращение, но, возможно, вы захотите использоват более двух веток для указания нужной ревизии, например, для того, чтобы узнать каки коммиты присутствуют в любой из нескольких веток, но отсутствуют в ветке, в которой вы сейчас находитесь. Git позволяет сделать это, используя символ ^ или опцию --not, перед любой ссылкой, доступные фиксации из которой вы не хотите видеть. Таким образом, следующие три команды эквивалентны: $ git log refA..refB $ git log ^refA refB $ git log refB --not refA Этот синтаксис удобен, так как позволяет указывать в запросе более двух ссылок, чег не позволяет сделать синтаксис с двумя точками. Например, если вы хотите увидеть все коммиты, доступные из refA и refB, но не доступные из refC, вы можете использовать одну из следующих команд: $ git log refA refB ^refC $ git log refA refB --not refC Три точки Последний основной способ выбора ревизий – это синтаксис с тремя точками, которы обозначает все коммиты, доступные хотя бы из одной ссылки, но не из обеих сразу. Если вы хотите узнать какие коммиты есть либо в ветке master, либо в experiment, но не в обеих сразу, вы можете выполнить: $ git log master...experiment F E D C Эта команда снова выводит обычный журнал коммитов, но в нем содержится информация только об этих четырёх коммитах, традиционно отсортированная по их дате. В таких случаях с командой log часто используют опцию --left-right, которая отображае сторону диапазона, с которой был сделан каждый из коммитов. Это делает данную информацию более полезной: $ git log --left-right master...experiment < F < E > D > C P.S. Информация взята из книги ProGit (ru). Подробнее об использовании Git можн узнать из нее.

Ответ 4



Обычно мы сравниваем ветки тогда, когда хотим увидеть то, что мы проделали в нашей ветке. Для этого я использую следующую комманду: git diff master...HEAD Покажет изменения одним патчем, которые я сделал в своей ветки. Для просмотра списка коммитов я использую такой алиас в ~/.gitconfig: [alias] tree = log --graph --decorate --pretty=oneline --abbrev-commit И потом, чтобы увидеть все коммиты на моей ветке: git tree master..HEAD или так: git tree --left-right master...HEAD | grep '^>' Это если мы стартуем наши ветки от master, если вы стартуете ветки, например с develop, то, соответсвенно, вы должны делать: git tree develop..HEAD

Ответ 5



Используйте Github Desktop, который можно скачать с самого сайта github. В нём очень удобно в визуальном режиме просматривать разные ветки и сравнивать их между собой.

Комментариев нет:

Отправить комментарий