Руководство по пониманию gitk? [закрыто]

83

Я представляю git команде разработчиков и считаю gitk отличным инструментом. Это также довольно сложно понять, поскольку для понимания gitk требуется понимание как истории git, так и самого инструмента просмотра.

Есть ли у кого-нибудь хорошие ссылки на что-то вроде «руководства для начинающих по истории git с gitk»?

Кросенвольд
источник
В блоге lostechies.com/joshuaflanagan/2010/09/03/… рассматривается презентация gitk и может помочь понять контекстное меню gitk.
koppor

Ответы:

93

Я никогда не видел ничего специально для gitk. Вот вам удар с точки зрения «как это работает». Знание команд, стоящих за всем (или, по крайней мере, в целом эквивалентных), помогает легче научиться использовать инструменты командной строки, а также показывает, где искать в документации, чтобы лучше понять gitk!

Меню файла

Это несколько изменилось за последние несколько основных версий - я описываю текущее состояние.

  • обновление и перезагрузка: это, наверное, самая запутанная вещь. Reload обновляет все, как если бы вы запустили программу заново с той же конфигурацией. Это означает, что если ветка была удалена / перебазирована, если некоторые коммиты теперь болтаются, вы их больше не видите. Update, с другой стороны, обновляет всю информацию, но по-прежнему показывает все коммиты, которые были показаны ранее. Это отличная вещь для использования, если вы перебазируете и хотите убедиться, что не испортили - вы можете увидеть как исходную, так и перебазированную версию.

  • ссылки: довольно очевидно. Ссылки включают теги и ветки (которые могут быть удаленными). Вы можете перечитать их и перечислить, чтобы щелкнуть конкретный, чтобы отобразить его в истории.

Просмотры

Как сказано на странице руководства , gitk использует параметры git-rev-list , чтобы указать, какую историю следует отображать. Их также можно настроить интерактивно в меню «Просмотр». Страница руководства - отличное место для поиска дополнительной информации о способах управления представлениями (в основном это в разделе ограничения фиксации). Если вы смотрели git-logраньше, вы много этого видели.

Помогите

Здесь есть список сочетаний клавиш! Сладкий.

Контекстное меню

Здесь представлены несколько общих команд git porcelain, обычно в обычном режиме работы / режиме работы по умолчанию. Их перечисление, по крайней мере, поможет вам найти нужную документацию, чтобы понять, что они делают, если вы еще этого не сделали!

  • git-diff (Diff this <-> selected
  • git-format-patch (сделать патч)
  • git-tag (создать тег)
  • git-diff-tree (запись фиксации в файл, используется редко)
  • git-branch
  • git-cherry-pick
  • git-reset (сбросить ветку сюда) Это предложит вам выбрать мягкий, смешанный или жесткий режим с кратким напоминанием о том, что каждый из них делает. Более подробное описание на странице руководства, но, конечно, вы должны понимать концепцию индекса, чтобы действительно понять его.

Команда «отметить фиксацию» и связанные с ней команды на этом этапе не требуют пояснений.

В контекстном меню ветки есть git-checkout и-d (удаление) git-branch.

Средняя часть

  • SHA1 ID: хэш текущего коммита. Очень полезно для копирования / вставки в терминал, чтобы выполнить действие с данным коммитом, который вы использовали для поиска gitk. Вы также можете вставить сюда хеши.

  • Кнопки вперед / назад, номер строки ... очевидно!

  • Найти! Параметры здесь снова довольно очевидны, но для всех они аналогичны параметрам git-log : «содержащий» - это --grep, «касание путей» - это аргументы, а добавление / удаление строки - -S(кирка).

Панель сообщений / различий

Здесь у нас есть сообщение о фиксации вместе с выводом git-diff - это что-то вроде использования git-log -p, с небольшими дополнениями:

  • «Филиалы» эквивалентны git branch -a --contains=<commit>

  • "Предшествует" / "Следует" эквивалентно git describe [--contains] <commit>( git-describe )

Каскабель
источник
Достаточно честно для команд меню gitk, +1 для этого. Вы хорошо справляетесь с частью "gitk", но я действительно надеялся на некоторое объяснение комбинации gitk и истории.
krosenvold
Я хотел бы дать лучший ответ! Думаю, я не совсем понимаю, что вы имеете в виду, говоря об истории git. Нужно ли объяснять концепцию ветвления и слияния? Тот факт, что коммиты напрямую зависят от предыдущего коммита через их хеш? Кажется, что как только вы буквально видите историю на экране, вам уже нечего объяснить.
Cascabel
Простите, может я тупой, но не понимаю как просто git commit -aи даже git addв gitk. Что-то мне не хватает?
ubershmekel
2
@ubershmekel gitk ничего из этого не делает; если вам нужен графический интерфейс для них, встроенный git gui. Однако этот вопрос касается только gitk, а gitk - это, по сути, инструмент просмотра истории (с небольшими манипуляциями с ветвями).
Cascabel
24

Вот введение в визуализацию истории веток в gitk со скриншотами.

http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/

  1. Верхняя левая панель показывает серию коммитов в этот репозиторий, причем самые последние находятся наверху.
  2. Было три коммита, все Тони Старк.
  3. Сообщение фиксации для самой последней фиксации было «третья фиксация».
  4. Существует единственная локальная ветка с именем «master», указывающая на самую последнюю фиксацию.
  5. Существует единственная ветка удаленной ссылки: ветвь «master» из удаленного репозитория с именем «origin», она также указывает на самую последнюю фиксацию.
  6. Желтая точка рядом с верхней фиксацией указывает, что это моментальный снимок, который в настоящее время находится в моей рабочей папке (называется HEAD).
  7. Я выделил вторую фиксацию, чтобы я мог видеть ее детали на нижней панели.
  8. SHA фиксации (уникальный идентификатор, аналогичный номеру ревизии
    субверсии ) второй фиксации - 3d024dd9e4a83d8c6a9a143a68b75d4b872115a6
  9. В правом нижнем углу показан список файлов, на которые повлияла вторая фиксация.
  10. В левом нижнем углу показаны детали фиксации, включая полную разницу.
  11. Щелчок по файлу в нижней правой панели прокручивает разницу в нижней левой панели до соответствующего раздела 12.
Идурсун
источник
3

Что новички действительно могут использовать в терминах «комбинации gitk и истории», так это конкретное объяснение того, как распознать, что произошло, глядя на представление дерева gitk.

Насколько я понял - правильный способ взглянуть на дерево (конечно же):

 1. each node is a commit
 2. ultimate parent is at the bottom
 3. direct child to a commit is the one that happened first in the same branch (no matter who did it)
 4. the node with 2 or more children indicates ... ?
 5. merge commit node has 2 parents.
 6. rebase is recognized ... ?

Также приветствуются скриншоты.

Дерево фактически представляет текущее состояние репозитория. Было бы здорово, если бы мы могли сказать, что произошло, глядя на представление в виде дерева.

благодаря

v.

тишма
источник
1
4. ... ветка, 6. ... совсем нет, поскольку она просто переупорядочивает существующие коммиты
Centic
1

Единственное, что мне кажется полезным в интерфейсе gitk, - это красивый (красочный) обзор веток.

Если вам нужен графический интерфейс для git, проверьте TortoiseGit в Windows или GitX на Mac или QGit в Linux.

Дэви Лэндман
источник
4
Я думаю, что это немного поспешное суждение. Конечно, конструктор действий - это круто, но многие из этих встроенных вещей в контекстном меню gitk отсутствуют. gitk предоставляет очень простой способ управления ветвями с визуальной обратной связью, что особенно полезно для новых пользователей.
Cascabel
1
Мне больше нравится cli, но иногда я вызываю gitk, просто чтобы увидеть ветви и слияния. Я бы не рекомендовал интерфейс gitk для новых пользователей .. Наверное, отпугнуть их?
Дэви Лэндман,
Как ни странно, я думаю, что вы оба правы.
innaM