Нужно работать в командной строке

А как в командной строке создать бранч в гите?

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

Когда я говорю, ребят, просто используйте самый лучший GUI git клиент (кстати он бесплатный для некоммерческого использования), все как один отвечают, что хотят делать это именно через консоль.

— Почему?

— Потому что через консоль это круто.

— Что это даёт?

— Знания.

— Которые позволят делать что?

— Работать из консоли с гитом.

— … Ну так и что это даст? Зачем это?

— Ну, мне это интересно.

— … Окей, так всё-таки зачем это делать на работе, польза-то от этого какая-то есть?

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

— …

 

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

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

Причём я скажу больше: СмартГит (хороший гуи клиент) позволит вам делать те же самые вещи намного быстрее. А в некоторых моментах, количество переходит в качество, и смартгит даст вам такие возможности, которых вы объективно не имели в командной строке. (сделать это можно и в командной строке, но настолько сложно и медленно, что человек не станет этого делать)

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

Учитывая и понимая это, становится очевидно, что не используя GUI клиент, вы не только ограничиваете свои возможности и эффективность, но и «обкрадываете» работодателя. Ведь в консоли вы делаете лишнюю работу, дольше, менее эффективно, плюс значительно увеличиваете вероятность совершения ошибки.

 

Но ведь какие-то минусы у GUI клиента есть? Чем-то ведь командная строка лучше?

Я могу привести только два примера, где командная строка лучше.

1. Клонирование репозитория. Пока локальной папки вообще нет, через GUI клиент нужно много куда тыкать. Через командную строку же можно просто написать git clone <вставить-сюда-ссылку-из-битбакета>, Enter, готово. Это просто намного быстрее и удобнее, ведь я уже в нужной папке в Тотал Коммандере. А вот когда папка уже создана, находясь в ней мне достаточно написать g, Enter. И GUI клиент окажется открыт в этом репозитории. %PATH%, g.bat: start "" "C:\Program Files (x86)\SmartGit\bin\smartgit64.exe" --open "%cd%"

2. Работа с ОГРОМНЫМИ репозиториями, если при этом одновременно изменять очень много файлов. У меня есть репозиторий, в котором 100 000 файлов. Когда я массово заменил какую-то строку в них, и SmartGit пытается все эти изменения просчитать и отобразить, всё это дело работает очень медленно. Ну то есть реально медленно. Здесь мне на помощь неожиданно пришла командная строка. git add, git commit. Всё настолько быстро, что я прямо поверил Линусу, типа он сделал git для работы с огромным количеством файлов исходного кода. Действительно, очень круто. Однако в случаях, когда ваша разработка не выглядит как изменение 100 000 файлов одновременно перед коммитом, такой способ не потребуется.

 

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

Подправлять направление корабля зигзагом, не теряя из вида цель

Ничего сложного. Когда знаешь, в чём и где твоя цель. Что это за точка b.

 

А вот когда не знаешь, получается всякая фигня. Вроде что-то делаешь, а результата нет. Так откуда ж ему взяться, если вы сами не знаете, какой он должен быть. Разве что дикое везение, «о, я приплыл в точку b. Видимо именно её я и искал! Нифига себе!»

Только в этом случае вам стоит вспомнить математику парадокса монти холла(реально, почитайте и попытайтесь его решить и ПОНЯТЬ; у меня на это понимание ушёл не один день, и можно сказать это понимание перевернуло мои взгляды на мир) Слишком вкратце, если среди множества вариантов только один правильный (неправильных - большинство), то вероятность что вам повезло и вы выбрали именно его — очень низкая. Нельзя рассчитывать на везение.

Когда вы что-то делаете, отдавайте себе отчёт, ЗАЧЕМ вы это делаете.

Нужно работать в командной строке? Нет. Нужно просто работать. Делать.

Обсуждение

avatar

Александр
2018.02.07 19:05

Работа с git без GUI, позволяет выполнять операции, не отвлекаясь на поиски нужных кнопок в интерфейсе, не боясь мискликов и т.п.
Ты точно знаешь, что именно произойдёт после той или иной команды. В интерфейсе всё не так однозначно. Какая-нибудь кнопка update может означать всё что угодно(fetch/merge, fetch/rebase, например). При том, что эти gui-клиенты каждые полгода меняются, исчезают, появляются новые…

Вот в mercurial tortoise-hg достаточно хорош в UX, чтобы использовать его 80% процентов времени. Но даже это не значит, что не нужно знать как всё сделать без окошек.

К тому же, не всегда в окружении вообще присутствует оконный менеджер. Поэтому навык работы без GUI быть обязан.

wpDiscuz