Tig — консольный GUI для Git

    Никогда не был фанатом gitk и пользовался им редко, предпочитая консоль и настроенные алиасы. Благодаря хабраюзеру grossws, я открыл для себя tig. Это то, чего мне не хватало. После месяца использования его в работе хочу поделиться находкой с вами.

    Tig это консольный GUI(TUI) для Git, основанный на Ncurses.
    Основные преимущества:

    • потрясающая скорость, 20,000 коммитов готовы к просмотру за четверть секунды
    • консольный
    • управление в vim стиле

    Cкриншоты основных режимов и сравнение с gitk.

    Установка:


    git clone https://github.com/jonas/tig.git
    cd tig
    make prefix=/usr
    sudo make install prefix=/usr
    

    Бубунтоводам не рекомендую устанавливать tig через apt-get, т.к. в репозитории находится версия 1.0, содержащая несколько багов, на данный момент(v1.2.1) исправленных.

    Одна из самых очевидных причин использования Tig — использование только клавиатуры. Вы совершаете меньше движений клавиатура-мышь, локоть на правом рукаве послужит дольше :)

    Shortcuts в порядке убывания:
    • h — help, список всех комманд
    • q — выход из активного view
    • / — поиск (например, по названиям коммитов или по автору)
    • n — следующий результат поиска
    • N — предыдущий результат поиска

    History view (m)


    Tig по умолчанию запускается в режиме просмотра истории коммитов. Это git log, чуточку украшенный ASCII-art (не больше чем это необходимо).

    Diff view (d)


    Режим, которым я пользуюсь чаще всего. Использую его в случае, когда нужно найти и проверить один конкретный коммит.
    • j, k или стрелки — перемещение
    • Enter — скроллинг
    • ] и [ — увеличить/уменьшить контекст diff
    • B — blame
    • e — открыть файл в Vim, курсор будет там где diff

    Log view (l)


    Использую его когда хочу получить общую картину о последних коммитах.

    Status view (S)


    Я бы назвал этот режим интерективным git add. Shortcut u служит для добавления/удаления файлов в индекс(stage).

    Branch view (H)


    Просмотр веток с тем, что для каждой сразу виден git log. Для быстрого переключения на ветку служит shortcut C.

    Stash view (y)


    Просмотр всех stash
    • j, k или стрелки — перемещение
    • Enter — просмотр содержимого
    • P stash pop (применить изменение из стека)

    Хороших коммитов ;)
    Share post

    Similar posts

    Comments 46

      +6
      Спасибо!
      Пользователям osx и brew можно поставить собственно из brew: brew install tig
        +7
        На маке же есть SourceTree!
          +2
          Есть. И реп на 30000 коммитов он грузит около минуты, а tig меньше чем за секунду.
          0
          Или из портов: port install tig
          +14
          sudo make install prefix=/usr
          *агррр*
          checkinstall make install
            +2
            sudo checkinstall make install prefix=/usr
            я бы так сказал; так как просто «make install» ставит его в $HOME/bin/
            +1
            Бубунтоводам не рекомендую устанавливать tig через apt-get, т.к. в репозитории находится версия 1.0

            Я бы как раз не рекомендовал устанавливать из исходников, не собрав пакета.
            PS. В репозитории 13.10 лежит версия 1.1
            PPS. Для 1.2 можно поискать PPA
              +1
              У меня на Ubuntu 12.04 установилась из репозитория вообще версия 0.17 :)
              +4
              В ppa:aguignard/ppa есть свежая версия
                +1
                Большое спасибо за ссылку на проект! Когда я только начинал использовать гит купил себе GUI клиента Tower. Когда освоился понял что из консоли делать все удобней и быстрее, но часто все рано возникает необходимость посмотреть все в более интерактивном режиме. именно такого легкого клиента мне и не хватало.
                  +1
                  Подскажите, как эту превосходную вещь подружить с русским языком?
                    +1
                    Вы бы хоть написали environment. У меня (Arch Linux, tig 1.2.1.1) всё прекрасно работает.
                      +1
                      Distributor ID: LinuxMint
                      Description: Linux Mint 15 Olivia
                      Release: 15
                      Codename: olivia
                        0
                        Настроены ли консольные шрифты?
                        Настроена ли русская локаль?
                        Проблемы только с ncurses приложениями или со всеми, кто выводит текст в консоль?
                          0
                          Да вот складывается впечатление что проблема с одним tig (либо с моим репозиторием)
                          выскочил в терминальный режим — русский везде нормальный
                          htop (судя по вики на ncurses ) тоже работает
                            0
                            Кодировки в репозитории совпадают с кодировкой консоли? Всякие git diff работают корректно?
                              0
                              Превосходно работают! :)
                              Без дифа жизни нет
                                +2
                                проблема решена, собралось криво, накатил из ppa все таки заработало :)
                        +2
                        а что у вас в гите на русском языке, простите?
                          0
                          в шаблонах
                          в заголовках коммитов
                            0
                            del
                          +3
                          под неправославный win7 можно это как-то запустить?
                            +2
                            можно попробовать через cygwin
                              +1
                              Через cygwin работает, проверял.
                            +3
                            [pedantic]
                            Консольный GUI? Тот самый, который Graphical? :)

                            Я бы назвал Tig интерактивным клиентом для Git, ну или альтернативным TUI (текстовым/консольным интерфейсом) для Git.
                            [/pedantic]
                              +2
                              Tig это консольный GUI(TUI) для Git, основанный на Ncurses.

                              Кажется, автор поста написал акроним TUI и название ncurses (библиотека терминало-независимого вывода в консоль).

                              Кстати, псевдографика — тоже графика)
                                0
                                Заголовок — главное.
                                  0
                                  До ализаровщины не дотягивает…
                              –1
                              Мержить умеет?
                              А то это почти единственное, чего мне не хватает в консоли от гита. Про vimdiff я знаю, но хотелось бы чего-то менее инопланетного.
                                0
                                Не умеет:
                                It functions mainly as a Git repository browser, but can also assist in staging changes for commit
                                +1
                                git difftool -t meld
                                git mergetool -t meld
                                

                                или любой другой по вкусу
                                  +2
                                  Спасибо огромное.
                                  Мне приходится работать через SSH, и графику тягать не очень приятно.

                                  PS Подключить rpmforge к CentOS, затем yum install tig
                                    0
                                    Давненько уже пользуюсь tig, вполне удобно, еще бы хоткеи были vim'кие
                                      0
                                      А они какие, emacs'овские разве?
                                        0
                                        Не там свой набор, gist.github.com/monolithed/8051896
                                          +1
                                          Ну, можно перебайндить, но последовательности клавиш он, увы, не воспринимает:

                                          bind  main G move-last-line # работает
                                          bind  main gg move-first-line # не работает
                                          
                                    0
                                    Под Винду, конечно же, не собрать?
                                    +1
                                    Попробуйте gitg вместо gitk, чисто визуально приятнее и т.п.
                                    tig пользуюсь года 2, кое что раздражает… пробовал сделать из mc аналог tig, не совсем то что хотел получилось… в итоге пользуюсь mc + git в 99% случаев.
                                      0
                                      Прелесно! Спасибо, отличная замена gitk.
                                        0
                                        А можно ли через него делать checkout выбранного коммита?
                                          0
                                          нет
                                            0
                                            Жаль, это было бы существенным плюсом для тех, кто не хочет учить команды, а то я как раз думал, как несведущим людям предоставить функционал для выбора версии.
                                              +1
                                              Ответил в соседнем треде.
                                            +1
                                            По умолчанию, есть checkout branch в branch view.

                                            Если вам нужно переноситься на коммит — в ~/.tigrc добавляете:
                                            bind generic g !git checkout %(commit)
                                            


                                            И получаете git checkout branch в generic-view (в котором tig находится по умолчанию) по хоткею g.

                                          Only users with full accounts can post comments. Log in, please.