Comments 28
Я безуспешно пытался найти какой-то нормальный GUI под Linux сначала для SVN, потом для Git. А потом забил и понял, что вполне достаточно командной строки + Meld + GitLab для ревью мержреквестов. Иногда дерево коммитов можно посмотреть в том же GitLab или локально в Gitg, если что-то пошло не так. Для каждодневной работы достаточно нескольких команд: commit, pull, push, rebase, add, switch - и всегда понятно что происходит.
А GUI, как это ни парадоксально, иногда оказывается даже сложнее. Потому что в него добавляют кучу команд, которые нужны достаточно редко. Или нужны, но не всем, например, мы вообще не используем merge, но люди, которые погружаются в проект, поначалу пытаются что-то мержить, у них каким-то образом получаются длинные безумные цепочки коммитов. При этом те команды, которые нужны "упрощают" так, что ничего не понять.
Sublime Merge пробовали?
Спасибо! Попробовал, он конечно выглядит достаточно мило, но если кликнуть по коммиту в ветке, то появляется контекстное меню с 24 пунктами, среди которых "Rename branch", "Copy branch" и другие штуки, которыми мы не пользуемся никогда, потому что у нас ветки существуют не очень долго и удаляются после мержа в master. Какие-то совершенно неведомые штуки для обычного пользователя типа "Set upstream", "Unset upstream" - я просто пушу ветку с ключом -u и всё, зачем мне в каждодневной работе эти команды.
Есть команда "Rebase master onto название_ветки" - я честно говоря вообще не понял, что эта штука сделала. Заребейзила мастер на ветку? Ощущение, что всё сломалось :) Мне нужно наоборот заребезить ветку на мастер - я так и не разобрался как это сделать, хотя это как-раз относительно частое действие. Плюс он периодически предлагает купить лицензию.
Я понимаю, что на разных проектах разная схема работы с Git и в GUI вытаскивают команды, которые могут пригодиться разным людям. Но на мой взгляд такой GUI только запутывает. Возможно я к нему не привык и не разобрался, но ощущение, что быстрее и проще разобраться в CLI.
Я встречал инструменты, в которых например, реализован Git Flow - там большие кнопки: создать ветку, смержить ветку - это реально упрощает работу для разработчиков не очень знакомых с Git. Но у нас не используется Git Flow и ещё мы используем rebase вместо merge. Для нашего проекта идеальный инструмент такой:
Есть большая кнопка создания новой ветки. Причём ветки в первую очередь создаются от master, а если человек пытается создать ветку от другой ветки то выдается предупреждение
Есть возможность переключения между ветками и чтобы дерево при этом не перестраивалось - master всегда первый. Возможность скрывать остальные ветки или сделать их более бледными, потому что от них двоится в глазах
Есть работа с индексом, commit, push и pull - в Sublime Merge они сделаны вполне норм, как и в большинстве таких инструментов. Удобно что выводится имя и email текущего пользователя, потому что иногда забываешь их настроить для нового репозитория
Есть кнопка rebase на текущий master с понятными разрешением конфликтов. Чтобы было видно сколько коммитов уже применено и сколько осталось
Это основные действия, которые должны быть с большими понятными кнопками. Все остальные команды или не нужны или должны быть где-то спрятаны.
Если ревью и мерж в master делается в GitLab, то в GUI это не особо нужно. Если нужно сделать какие-то сложные вещи типа исправления предыдущих коммитов, то всё это должен делать человек, который хорошо разбирается в Git и ему проще и надёжнее сделать это через командную строку. Большинство GUI сделаны непонятно для кого, наверное для всех сразу. Я думаю тут нужен максимально НЕ гибкий и НЕ универсальный интерфейс с несколькими предопределенными схемами работы (типа Git Flow), от которых в принципе невозможно отойти.
VSCode IMHO подходит в качестве гуя для гита лучше.
1. Есть встроенный терминал, так что не надо переключать окна для того, чтобы управлять гитом (я не переношу GUI для pull, merge, rebase, очень долго выходит)
2. Удобно добавять/удалять файлики в stage
3. Удобно делать stash одного файла, если очень надо
4. На мой взгляд разрешать merge-конфликты в VSCode в 7000 раз приятнее Meld. Сам пользовался Meld года 3, но один раз увидев как оно сделано в VSCode - забросил Meld навсегда. Правда недавно (вроде в 1.70) завезли 3-way merge, но он откровенный кал. Слава богу в настройках отключается на "классику".
5. Есть удобный плагин Git Lens, который по нажатию Alt + B делает git blame. Оч удобно.
Ещё умеет графический интерфейс для интерактивного ребейса.
https://user-images.githubusercontent.com/641685/99691407-3682df80-2a57-11eb-9ba6-1d9e12b8c774.png
После работы с десятком GUI-оболочек для гита, я пришел к оболочкам с терминальным интерфейсом (TUI). Больше всего понравилась lazygit, в которой сейчас и работаю. А если есть проблемы с запоминанием кучи горячих клавиш, то можно попробовать gutui, который слегка сыроват.
Как же я опечален новым Git Expirience в 2022 студии. Старый Team Explorer был очень компактным, но при этом за счет разделения через меню на Sync\Changes\Branches\etc. удобным. Теперь же всё запихнули в одну вкладку, если пушить череp Git Changes - ты не видишь, что ты пушишь - надо открывать Git Repository, там раскрывать Outgoing. Плюс Git Repository не закрепить нигде - она всегда закрывается после закрытия студии.
Мои поиски GUI клиента остановились на Git Extensions, он покрывает все ежедневные потребности.
Плагин гита в студии в обзоре, ровно тот же что в 2019, в посторонних обновлениях студии он имеет куда больше измерений.
Гуишные оболочки использую только посмотреть графики, ну в студии иногда разрулить конфликты. Все остальное как то проще и быстрее через консоль.
Использую платный GitKraken. Есть определенные трудновоспроизводимые баги, скорее связанные с нашим гит сервером. Порой подпедаливает при нестабильном соединении. Иногда не срабатывает интерактивный rebase (когда нужно мержить обновления сабмодулей).
Из хорошего: приятный gui, корректная работа с lfs, с пол тыка полноценная интеграция с кучей сервисов, включая GitHub/GitLab. Одинаковый интерфейс на Win/Ubuntu/Mac.
Навскидку после статьи, сравнивая с MeGit, что лучше ? Я на кракена тоже посматриваю - визуально он очень хорош, а вот по поводу остального функционала так мнений и не нашел
На больших репозиториях (~40 Gb) подтормаживает, часто бывает, что вдруг начинает полностью грузить одно ядро. Раньше этот жрущий процесс (похоже, это GUI) мог скатываться до выжирания памяти и падения, но в последних версиях это починили — теперь в целом около 2 Гб кушает, в нажорных пиках до 5 доходит, но через пару минут успокаивается.
Нет официальной поддержки worktrees, но на самом деле поддерживает нормально (список stash-ей един на все деревья, но возможно, это особенность самого гита) — при открытии репозитория не распознает worktree как репозиторий, но открывает нормально.
Функционал Blame нерабочий — грузит долго, а если прогрузит, то по двухпиксельной цветной полосочке не понять, что к чему относится, и информация об авторах пустая. Попытка нажать на эту полосочку опять запускает какой-то рескан.
Интерактивный rebase примитивный — нельзя остановится в любом месте или добавить дополнительный коммит, первый коммит нельзя пропустить. Только reword, squash, drop и pick. В целом почти достаточно. Да, и двигать коммиты приходится по одному мышкой — кнопок не предусмотрено.
Ребейз довольно хрупкий, дискардом изменений из клиента, если это последний файл, после разрешения конфликта можно запросто прервать процесс ребейза. Поэтому этого лучше не делать, делайте из консоли.
Минус — непонятный редактор мерджа изменений при конфликтах. Непонятно, что было, какие изменения слева, какие справа. Показывает какое-то несуществующее состояние.
Редактирование файлов в Diff-ах возможно только в платной версии — малость неудобно, но это не так уж и часто требуется.
Граф коммитов конечный — на длинной истории может закончится. Это иногда мешает, хотя очень редко — я 10000 поставил, в целом хватает.
В целом, все же самый адекватный клиент под Linux, другие еще непонятнее. Но если кто TortoiseGit умудрится запустить, то пойдет кракен в корзину.
MeGit сегодня попробовал и что-то мне сразу не понравилось. Граф и текущее состояние рабочей копии разнесены по разным вкладкам, worktrees не понимает. Плохо проработаны акценты — где сообщение коммита, где измененные файлы — так с первого взгляда и не понять.
Из плюсов — на том же 40 гиговом репозитории около 900 Мб потребляет, по первому впечатлению гораздо отзывчивее. Впрочем, я его только 5 минут посмотрел
уф... вы прям серьёзно в вопрос погрузились. я даже не знал, что worktree так активно юзается
В домашних проектах я его не использую, а на работе 5 версий поддерживаются, так что лучше по рабочей копии на каждую ветку иметь, чтобы мерджить туда-сюда и проверять, что получилось. Проект большой, просто ветками замучаешься переключаться и пересобираться после этого. Там на самом деле SVN, но я через git svn работаю с ним. В целом получается, что размер worktree как один SVN checkout, но с гитом плюс, что при том же общем размере у меня вся история есть локально
Есть еще вполне годный Fork. Пробуйте, автор отзывчив.
не нашел для себя ничего лучше клиента от jetbrains
остальные клиенты особо не заморачиваются и делают обычный вызов команд гита в удобном ui, но они сделали поверх него много чего интересного и многое происходит проще и в автоматическом режиме
А они standalone версию выпустили? Или это ставить идею надо? У меня кроме CLion ничего не куплено.
Отдельного клиента нет, хотя вроде как было большое кол-во желающих такой продукт иметь.
Это всё же плагин, отвязать его от IntelliJ нетривиальная задача будет. Разве что делать связку IDEA с только этим плагином, но всё равно жирно получается, имхо.
к сожалению нет, но есть во всех их IDE в виде плагина
Коммитить/ребейзить/пушить в нём одно удовольствие. А вот дерево неудобное. Если нужно поколдовать с ветками, разобраться что откуда и куда растёт, кто где чего понаделал - вышеупомянутый GitExtensions.
Ну раз все меряются делятся своими предпочтениями, вставлю и свои 5 копеек.
Перетыкал в свое время разные клиенты, начиная от CLI и TortoiseGit и заканчивая Source Tree и VS2022.
Лучше всех других мне подошёл Smart Git - всё нужное на виду, ненужное не лезет в глаза. При обучении новички на лету схватывают идеологию Git-а. Интеграция с GitHub/GitLab. И, правда платный, плагин для разруливания Пул/Мердж реквестов, чтобы не заходить на веб-интерфейс.
Вообще удивлён что про него так мало знают/пишут. Рекомендую попробовать
Мои поиски GUI клиента для GIT остановились на Intellij IDEA (да, я и не искал). Лучше ничего не видел.
Git — сравнение Visual Studio 2022 с MeGit/EGit и SourceTree