Была у меня ветка 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. В нём очень удобно в визуальном режиме просматривать разные ветки и сравнивать их между собой.
Комментариев нет:
Отправить комментарий