Close

GitK

Gitk — это первый в своем роде графический браузер репозитория. Его можно рассматривать как оболочку графического интерфейса для git log. С помощью Gitk можно проанализировать и наглядно представить историю репозитория. Инструмент написан на Tcl/Tk, поэтому его можно назвать кроссплатформенным. Gitk поддерживается Полом Маккеррасом в качестве независимого проекта, не связанного с ядром Git. Стабильные версии распространяются в составе пакета Git для удобства конечных пользователей. Gitk может стать полезным учебным пособием для новичков в Git.


Gitk overview


Инструмент Gitk может принести пользу при обучении новичков в управлении версиями или разработчиков, которые переходят в Git из другой системы управления версиями, например Subversion. Gitk — удобная утилита, которая поставляется вместе с ядром Git и включает графический пользовательский интерфейс для наглядного представления внутренней механики Git. Среди других популярных графических интерфейсов Git можно выделить git-gui, а также Sourcetree от Atlassian.

Использование


Gitk вызывается аналогично git log. При выполнении команды gitk запускается пользовательский интерфейс Gitk, который будет выглядеть примерно так:

Initial kopiera

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

Gitk отражает текущее состояние репозитория. Если оно изменится в результате работы с командной строкой (например, изменятся ветки), Gitk нужно будет перезагрузить. Для перезагрузки Gitk можно использовать команду меню File -> Reload (Файл -> Перезагрузить).

базы данных
Связанные материалы

Перемещение полного репозитория Git

Логотип Bitbucket
СМ. РЕШЕНИЕ

Изучите Git с помощью Bitbucket Cloud

По умолчанию в Gitk отображается текущая история коммитов. Gitk имеет множество параметров командной строки, которые можно передать при инициализации. Эти параметры в основном ограничивают список коммитов, которые отображаются на верхних панелях Gitk. В общем виде командная строка с параметрами версий выглядит следующим образом:

Параметры


    gitk [<options>] [<revision range>] [--] [<path>…]

    <revision range>

Можно указать диапазон версий в виде .., чтобы просмотреть все версии между и , или же указать одну версию.

  <path>…

Отображение только коммитов с определенным путем к файлу. Для отделения путей от имен версий используйте «--», чтобы отделить пути от любых предшествующих параметров.

--all

Отображение всех веток, тегов и ссылок.

--branches[=<pattern>] --tags[=<pattern>] --remotes[=<pattern>]

Displays the selected item (branches, tags, remotes) as if they were mainline commits. When <pattern> is passed, further limits refs to ones matching the specified pattern

    --since=<date>

Отображение коммитов, выполненных позже указанной даты.

    --until=<date>

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

    --date-order

Сортировка коммитов по дате.

    --merge

Отображение коммитов, которые изменяют конфликтующие файлы, обнаруженные в ходе слияния.

    --left-right

Отображение информативных меток, указывающих, к какой стороне сравнения принадлежит коммит. Коммиты с левой стороны имеют в качестве префикса символ «меньше» (<), а коммиты с правой стороны — символ «больше» (>).

    --ancestry-path

Если задан диапазон отображаемых коммитов (например, «коммит1..коммит2» или «коммит2 коммит1»), отображаются только те коммиты, которые находятся непосредственно в цепочке предков между коммит1 и коммит2, то есть коммиты, которые являются одновременно потомками коммит1 и предками коммит2 (более подробное объяснение см. в разделе «Упрощение истории» на странице руководства git-log(1)).

L<start>,<end>:<file>

Параметры, которые позволяют эффективно отслеживать историю кода для заданного диапазона номеров строк.

Discussion & examples


Чтобы отобразить полезную информацию, утилите Gitk нужен базовый репозиторий с историей коммитов. Приведенный ниже код представляет собой последовательность команд Bash. С их помощью будет создан новый репозиторий с двумя ветками, в которых есть коммиты, и эти ветки будут объединены в одну.

    mkdir gitkdemo &&
    cd gitkdemo &&
    git init . &&
    echo "hello world" > index.txt &&
    git add index.txt &&
    git commit -m "added index.txt with hello world content"

В качестве примера изучим этот демонстрационный репозиторий с помощью Gitk. Приведенная выше последовательность команд создает новый репозиторий с одним коммитом и файлом index.txt. Теперь вызовем gitk для изучения репозитория.

First commit

Can Gitk compare two commits?


Продолжим работу с демонстрационным репозиторием и создадим дополнительный коммит:

 echo "prpended content to index" >> index.txt &&
    git commit -am "prepended content to index"

Once the proceeding commands are executed, gitk will need to be reloaded. Either reload gitk from the command line or use the GUI and navigate to File -> Reload. Once reloaded we should see our new commit.

Next commit

Как видите, ссылка на главную ветку main теперь указывает на новый коммит. Чтобы сравнить эти два коммита, воспользуемся левой верхней панелью истории. На панели истории нажмите коммит, который станет основой для сравнения. После этого щелкните правой кнопкой мыши на втором коммите для вызова контекстного меню.

Commit diff

В контекстном меню доступны следующие варианты:

    Diff this -> selected
    Diff selected -> this

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

Diff output

Результаты выполнения команды diff показывают, что в файле index.txt появилась новая строка (prepended content to index), которая была добавлена между двумя коммитами.

How to use Gitk to compare two branches


Продолжим работу с нашим примером репозитория и создадим новую ветку.

    git checkout -b new_branch &&
    echo "new branch content" > new_branch_file.txt &&
    git add new_branch_file.txt &&
    git commit -m "new branch commit with new file and prepended content" &&
    echo "new branch index update" >> index.txt &&
    git commit -am "new branch commit to index.txt with new content"

Показанная последовательность команд создает новую ветку с именем new_branch и добавляет в нее файл new_branch_file.txt. Кроме того, добавляется новое содержимое в файл index.txt, и выполняется дополнительный коммит для этого обновления. Теперь у нас есть новая ветка, которая опережает главную на два коммита. Нам придется перезагрузить Gitk, чтобы увидеть эти изменения.

New branch

Это отличная возможность для изучения механизма ветвления в Git. Gitk отображает коммиты в виде линейной последовательности. Термин «ветвление» подразумевает, что на временной шкале должна появиться «ветка» или форк. Ветки Git отличаются от веток в других системах управления версиями. В Git ветка — это указатель на коммит. Указатель перемещается между коммитами по мере их появления. Создавая ветку Git, вы ничего не меняете в структуре репозитория или дереве исходного кода. В результате этой операции появляется только новый указатель.

Чтобы найти коммиты, которыми различаются эти две ветки, нужно запустить Gitk, указав диапазон версий. При выполнении команды gitk main..new_branch откроется окно Gitk, в котором будут показаны только коммиты, расположенные между двумя ссылками на ветки.

Compare branch

Эта утилита эффективна при сравнении веток.

Сравнение Gitk и git-gui


git-gui — еще один графический интерфейс Git на базе Tcl/Tk. Если в Gitk основное внимание уделяется навигации и наглядному представлению истории репозитория, то инструмент git-gui ориентирован на уточнение отдельных коммитов и работу с аннотациями отдельных файлов. Кроме того, он не отображает историю проекта. При этом из меню git-gui можно запустить Gitk для изучения истории. Этот инструмент также вызывается из командной строки с помощью команды git gui.

Gitk summary


Подводя итоги, повторю, что Gitk — это оболочка графического интерфейса для git log, которая представляет собой невероятно эффективный инструмент для анализа и наглядного представления истории репозитория. Кроме того, инструмент Gitk может быть полезен при изучении внутреннего устройства Git.


Поделитесь этой статьей
Следующая тема

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Люди сотрудничают друг с другом, используя стену со множеством инструментов

Блог Bitbucket

Рисунок: DevOps

Образовательные программы DevOps

Демонстрация функций в демо-зале с участием экспертов Atlassian

Как инструмент Bitbucket Cloud работает с Atlassian Open DevOps

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up