Как стать автором
Обновить

Комментарии 35

Почитал статью по диагонали - по моему любой гуй будет понятнее и удобнее.

Лет пять пользуюсь gitextension (под windows, впрочем) - он скрывает за собой почти все необходимые мне фичи. Пулл-пуш, коммит, редкий ребейз\черипик и разрешение конфликтов. Знаний консольных команд при этом не нужно, всё в кнопках, местами есть картинки для подсказок. Местами "главные" кнопки отдельно подсвечивают. Местами есть доп диалоги типа "а хотите ещё вот это сделать?" с возможностью запомнить поведение.

Ага, гуевых клиентов много. Здесь вопрос удобства лично для тебя и привычек.

У меня часто работа идет именно в терминале (да да, я еще и файлики Vim'ом редактирую!), поэтому тыркаться куда-то в сторонний гуй будет просто неудобно — быстрее и комфортнее запустить терминальную же утилиту и парой быстрый хоткеев без движений мышкой по кнопкам сделать нужные действия с гитом.

На мой взгляд даже из терминала удобнее просто набрать `code .`, сделать нужные вещи и закрыть vscode. Но это если нужно что-то сложнее просто коммита или простой работы с ветками

Гуй конечно хорошо, но когда у тебя сборочник на удаленке - проще и полезнее поставить терминаьлный гуй. Ну и плюс хороших и бесплатных гуёв всё ещё нет - Tortoise Git, Git 4 Windows, Source Tree, git cola - крайне неповоротливые, часто неоправданно большие, а иногда ещё и крашатся, плюс интеграция с другими инструментами крайне скудная (kdiff3 например), либо откровенно кривая, и это в довесок к интеграциям, о которых никто не просил. Поведение опять же отличается от консольного гита - конфиги и ssh ключи через одно место и поди найди ещё это самое место. А уж если коммиты подписывать надо, то тут ещё одна свистопляска.

Из хороших и платных знаю только Sublime Merge, но его на кучу машин не наставишься, плюс некоторые сборочники шарятся между разрабами и это фактически запрещает его использование на них. Всякие свистелко-пердельные клиенты типа Git Kraken рассматривать даже смысла особо нет.
Как у них с подписью коммитов правда не в курсе.

lazygit в этом плане неплох, но на определённых данных и просто неудобно пользоваться - слияние длинных строк, работа с длинными путями и кажется он не слишком хорошо работает с большими репозиториями - чуть веток за десяток перевалило и дерево начинает ползти и коммиты крайне неспешно отображаются, плюс всё это жрёт память довольно ощутимо - спасибо go рантайму. Поэтому последней инстанцией стал gitui. Выглядит практически также, только по набору фич переплевывает плюс по скорости и потреблению памяти переигрывает. Однако коммитить с подписью и работать с bare репами тоже не умеет, но клиент продолжает развиваться - недавно вертикальную прокрутку добавили, например. И да есть даже под FreeBSD.

А что такое "сборочник на удаленке"?

Ну потому что у меня гит на моей локальной машине, я на ней работаю и выполняю все гитовые операции. Всё остальное работает другими способами - хуками, к примеру.

ПС: с моей точки зрения gitextension очень даже бесплатный и хороший. Source Tree вроде тоже бесплатный для личного использования, не помню деталей.

"сборочник на удаленке"

Удалённая машина, на которой собирается код. В моём случае - C/C++ на виртуалке с FreeBSD, например.
Source Tree - бесплатен для всех, однако у него есть куча интеграций, которые нужны далеко не всем, плюс оно крайне плохо работает с git lfs. Если атлассиановский аккаунт не используется, то он миллион попапов высветит. Деталей не помню, но была какая-то проблема с поиском/хранением ssh ключей на Windows, которую так и не обошли. В итоге некоторые вещи приходилось ручками из консоли делать, благо под это есть кнопка в интерфейсе. Переключение веток непропопорционально тормознуто, в сравнении с обычным git checkout branchname, поиск хотя бы по заголовкам коммитов - тормознуто, просмотр коммитов, особенно с разных веток - тормоза. Встроенный diff - довольно кривой. Удаление/добавление hunkов с изменениями - тормоза по несколько секунд. Иногда оно может покрашиться, под виндой со всеми интеграциями может просто повиснуть на каком-то дедлоке во время синхронизации чего-то куда-то о чем никто не может рассказать.
GitExtensions сам не пользовал, но там вроде были проблемы с отсутвием встроенного резолва мержей или что-то в этом роде. Насколько оно тормознуто тоже не могу сказать. Знаю что винда не в восторге от кучи пунктов контекстного меню, которые оно добавляет.
Если очень хочется gui то лучшими кандидатами (ИМХО) на Windows были TortoiseGit и git-cola. Основная претензия к ним, что они довольно тормозные. У черепашки - просмотр истории был медленный и работа с конфликтами была кривоватой, а кола так и вовсе с питоном под капотом.

Удалённая машина, на которой собирается код. В моём случае - C/C++ на виртуалке с FreeBSD, например.

Так а зачем там то гит клиент нужен?

Там должен быть "агент" ci\cd, который триггерится на настроенные события и билдит. В билде делаем очевидные clone && checkout и всё.

GitExtensions сам не пользовал, но там вроде были проблемы с отсутвием встроенного резолва мержей или что-то в этом роде

Встроенного нет, я пользуюсь тем что идёт с VisualStudio. Только он вполне корректно вызывается из GitExtension, а это всё что надо от хорошего инструмента.

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

С подписями да, есть особенности.

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

Если при этом надо еще и Sign-off-запись получить в комменте, тот тут немного сложнее. Я пробовал повесить выполнение коммита с --signoff на новый хоткей (в конфиге можно как угодно настраивать все), но на моменте ввода ключа GPG почему-то его начинает дико колбасить — и лейзигит не свернут, и пароль вводится, и все мерцает. Возможно, я сделал что-то не так, и надо было в конфиг прописать сворачивание его как при обычном коммите, но, если честно, мне стало лень разбираться.

В итоге я просто накидал скриптик с git commit --amend --no-edit --signoff% и теперь процесс выглядит так: коммит, пароль, q, скрипт, снова лейзигит и пуш. Занимает этот аккорд буквально секунд 5 на самом деле, но зато все подписывается.

Что значит "всё ещё нет"? Прямо в комментарии на который вы отвечали упоминается Git extensions — хороший и бесплатный гуй для винды.

Когда сборка на удалёнке, у вас будет не более чем git clone в нём и уж точно речь не про kdiff3. При этом если даже удалённо прям разрабатывать нужно, всякие VSCode и JetBrains умеют в ремоутный сервер

Ах, жить бы в этом замечательном мире где всё работает.

kdiff3 конечно же не на удаленке, хотя можно и через иксы прокинуть.

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

странно, что вы называете JetBrains и VsCode тулами вокруг гита. Суть в том что несмотря на наличие таких фич как удаленный сервер разработки они работают либо плохо либо вообще не работают на FreeBSD. То бишь нельзя просто сделать pkg install blabla && blablabla serve и оно автомагически заводится. Оно требует дополнительно красноглазить и допиливать напильником, что мне персонально делать очень не хочется. Плюс сборка кода происходит не слишком стандартным образом, так что тут ещё некоторая кучка нюансов, которые могут всплыть, до которых я просто ещё не добрался. Так что живём с болью от турбоподогрева кресла.

Пару лет попробовал все, остановился на SmartGit, бесплатен для оперсорса.

+1 за gitui тоже остановился на нем

Уже многие годы юзаю встроенный в JetBrains'овые IDE git-клиент и бед не знаю. Это если говорить про непосредственно локальную разработку. Ну а на ремоуте в любом случае консоль, и данная штуковина выглядит весьма интересной.

Пользую GitExtensions, с интеграцией в тикеты GitLab и Meld. Неплохо, но прямо в нём есть консоль, которой тоже активно пользуюсь (в т.ч. glab, tig который на винде ставится прямо с гитом), которая bash (т.е. по дефолту всё тот же vim для нюансиков, если не переконфигурить, но мне норм).

Почитайте на досуге https://git-scm.com/book/ru/v2 и жить станет сильно интереснее

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

Да, понимать что внутри происходит помогает в случае проблем или сложных кейсов. Да, возможность без гуя быстро разобраться вне своего рабочего места - тоже иногда надо. Но в обычной ежедневной работе - гуй закрывает все 146% моих задач и это хорошо.

что-то мне показалось, что это не только не упрощает, а пожалуй даже и как-то усложняет работу с гитом. :) учить кучу хоткеев вместо нескольких команд – ну такое себе… лучше уж и правда гуй взять – бесплатный типа gitahead или платный типа git tower.

если уж говорить об инструментах которые экономят время – тут лучше про git town написать было бы – он реально неплохо автоматизирует большинство типовых задач…

А зачем учить, там же либо буквально кнопка с подсказкой рисуется, либо жмется кнопочка H и открывается cheatsheet c хоткеями.

Там подсказки просто "гениальные". Push и Pull висят на кнопке 'p' и 'P' или 'P' и 'p'. 50/50 шансы угадать с первого раза какая p является заглавной, а какая нет. По крайней мере с тем терминальным шрифтом, что был у меня в убунте.

Это запоминается с первых двух тыков на самом деле. Как и тот факт, что надо сначала выбрать что-то, а потом на чем-то другом что-то нажать, как, например, в случае с ребейзом веток.

Тут вопрос в том, насколько инструмент интересен и хочется в нем работать. У меня лично года три назад не возникло желания его бросить, а наоборот хотелось изучить и пользоваться. Наверное, потому что он очень хорошо вписался в мой повседневный кейс работы.

А вот гит в той же GoLand мне неудобен, хотя там и «наглядно» все. Как и в VSCode.

Как по мне, главное преимущество этого lazygit - исключительно в его консольности, то есть можно прямо на удаленной машине в случае чего запустить. Локально же да, из консоли вообще не вижу смысла что-то делать. Разве что иногда из соображений практики, чтобы совсем не забыть, как это делается.

Еще не гуй, но уже и не куй. Целевой аудиторией скорее всего будут пользователи vim, но для них явно был бы удобнее плагин с таким функционалом, вместо отдельной софтины.

Обычно значительно проще использовать команды CLI для работы с GIT, за исключением моментов, когда надо полазить по истории. Для этого есть утилита TIG.

Эта утилита достаточно забавная, но на мой взгляд, избыточная.

когда надо полазить по истории

Ну так ведь git log --graph :) А вообще, фейпалм и слёзы каждый раз когда вижу людей что даже git commit не могут сделать без полусотни гуйных утилит :)

И что мне с этим графом делать? В форке я делаю тыцк на нужный коммит во всегда открытом дереве, тыцк на интересный мне файлик и вижу диф. Без мотания туда обратно портянок с выводом терминала.

И даже гит коммит гораздо удобнее, когда ты интерактивно видишь измененые не в индексе, индекс, дифф любого файла из индекса и можешь всем этим жонглировать прямо на том же экране, на котором пишу сообщение коммита.
Так я и не забуду ни про какой файл и не пропущу лишнее недостертое, и не забуду в месседже написать про мелочь, которую я тоже поправил, но походя.

Уставил как написано
> brew install lazygit

запустил, потыкал, смотрю - внизу написано H/L to scroll окей, нажал L, программа зависла навсегда. Знакомство было недолгим

Жаль автора программы, который потратил на нее время.

Я использую GitHub Desktop и в git лезу только когда тег не на тот комит прицепил

Откройте для себя magit :-)


Даже под vscode есть версия, вполне сносно работает.

Для любителей консольных утилит. В коем числе и я.
Но, откровенно говоря, практически ничего стороннего для гита не использую, всё могу сделать просто из терминала без гуёв и утилит. Что неудобно (или не наловчился), так это разрешать конфликты при ребейзе. Всё остальное делается руками и быстро. Если надо полазить по содержимому в истории коммитов, то в VSCode всё минимальное есть.

Разработчику безусловно респект, потрудился, а труд в целом нельзя обесценивать, нравится он тебе или нет)

Отличный консольный GUI-клиент! Спасибо за наводку, но есть пара замечаний к терминологии.

Remote в отношении репозиториев и веток не очень адекватно переводить как «удалённая». Это порождает странные понятия типа «удалить удалённую». Лучше говорить «внешняя ветка», «вышестоящий репозиторий».

Commit Message это явно не название коммита, это именно «сообщение коммита». Многострочный текст из нескольких абзацев это не название. Заголовок сообщения коммита разве можно обозвать названием? Когда мы поправляем сообщение склеенных коммитов после squash, это не переименование коммита, а редактирование сообщения.

Ну и если вы технический писатель, то должны знать, что в английском языке нет наших падежей и нелепо выглядит попытка прикрутить изменённые окончания к словам написанным английскими буквами — «Vim’ом редактирую». В тексте такие места выглядят скорее как обозначение икоты. Либо пишите русскими буквами «Вимом редактирую», либо оставляйте названия как есть «в Vim редактирую»

в английском языке нет наших падежей и нелепо выглядит попытка прикрутить изменённые окончания

Не согласен с вами. В английском не склоняются существительные, но в русском языке этому правилу лучше следовать. Пусть многие в техническое среде так не делают, это явление — оно вовсе не о правилах и красоте речи...

«Я купил Tesla»/«Я еду на Tesla» или «Я купил Теслу»/«Я еду на Тесле»? Конечно, второе! Первое звучит не по-русски, а возможны случаи, когда попросту не будет передавать верный смысл/вводить в заблуждение (не зря же слова в русском языке склоняются).

Но от русскоязычного написания англоязычных названий я бы тоже воздержался. Может быть, конкретно с Теслой это ещё и прокатит, потому что уже привыкли, но вот со многими другими названиями будет больше проблем, чем пользы.

Идеальный вариант — добавлять русское существительное перед брендом, которое склонять: «Я купил машину Tesla». Но при частом употреблении может получиться довольно громоздко.

В общем, добавление русских окончаний англоязычным терминам не более нелепо, чем их употребление вовсе без окончаний.

Согласен, нормально будет перестроить фразу так, чтобы слово оставалось в «именительном» падеже и не пришлось коверкать английский термин. «Я купил автомобиль Tesla».

Но точно не стоит писать «Я купил Tesl’у» или «Я еду на Tesl-е». Если очень хочется просклонять, то писать только кириллицей, однозначно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий