avva: (Default)
[personal profile] avva
(эта запись может быть интересна программистам)

Наверное, это неправильно, что меня так смешит запись Reset Demystified. Если вкратце, то автор книги Pro Git (!), признается в том, что мало написал о команде git reset в своей книге, потому что плохо ее понимал (!!). Но с тех пор он прочитал о ней побольше, и сейчас объяснит ее раз и навсегда, в блог-записи на 17 страниц!

Можно ли придумать более убедительную демонстрацию извращенности и враждебности командной строки гита? У команды git reset, которая потенциально может полностью стереть ваши изменения навсегда, есть три разных подвида, каждый из которых делает совершенно разную работу, и еще один из этих подвидов очень похож на другую команду, git checkout, но только в одном из ее подвидов - другой опять-таки делает совершенно другое! Но ничего, все станет кристально ясно, как только мы изучим полезнейшую сводную таблицу в конце записи:



Правда, теперь все понятно?

Я вспомнил, когда это прочитал, как два или три года назад мне так же было смешно, когда в Hacker News обсуждали новый сайт "Daily git tips". Я пытался сказать одну простую вещь: если вам для работы с системой управления версиями нужен сайт с ежедневными новыми советами, то что-то не так в вашей системе. Но меня, кажется, не очень поняли. Или не согласились.
Page 1 of 3 << [1] [2] [3] >>

Date: 2012-02-02 02:07 am (UTC)
sanmai: (Linux)
From: [personal profile] sanmai
Никто же не заставляет вас пользоваться всеми вариантами команды reset?

Сайтов с ежедневными новыми советами по любой теме навалом, какую не возьми. Потому это явление никак не может считаться аргументом против чего-либо.
Edited Date: 2012-02-02 02:09 am (UTC)

Date: 2012-02-02 02:23 am (UTC)
From: [identity profile] vzaliva.livejournal.com
одна из причин почему я предпочитаю mercurial

Date: 2012-02-02 02:27 am (UTC)
From: [identity profile] msh.livejournal.com
Ну да, а для тех, кому git недостаточно запутан, Google еще придумал repo :-)

Date: 2012-02-02 02:52 am (UTC)
From: [identity profile] helvegr.livejournal.com
> признается в том, что мало написал о команде git reset в своей
> книге, потому что плохо ее понимал

Ну, собственно, это говорит о том, что git можно успешно
пользоваться и не разбираясь в этих тонкостях.

Date: 2012-02-02 03:33 am (UTC)
From: [identity profile] amosk.livejournal.com
Если вам для освоения профессии нужно много лет учиться, то что-то не так в вашей профессии :)

Вообще когда кто-то упомнает git в контексте сложности изучения - это к срачу. Вот там уже выше в комментах написали что а вот в меркуриале дескать все зашибись.

А конкретно по технической стороне темы: новичку достаточно знать reset --hard [commit] для того чтобы откатывать ветку (ну и конечно всегда коммитить перед reset - тогда по логу коммитов всегда можно восстановить все что было откачено).

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

Date: 2012-02-02 03:48 am (UTC)
From: [identity profile] juri-jurta.livejournal.com
В Bazaar больше возможностей (например, поддержка bound branches).

Date: 2012-02-02 04:14 am (UTC)
From: [identity profile] bvlb.livejournal.com
у меня последнее время точно такое же ощущение, но не от git'а, а от английской грамматики.

Date: 2012-02-02 05:12 am (UTC)
stas: (Default)
From: [personal profile] stas
Непонятного мало, но я бы тоже не согласился. Гит просто имеет функций на пару порядков больше, чем его предшественники. Да, 90% этих функций 90% времени не нужны. Но уж когда нужны, так уж нужны. Разумеется, некоторые real men презираются системы, где много опций, и никогда не пользуются vim (emacs они вообще считают воплощением лично Диавола), а только sed, потому что у vim слишком много опций. Я, например, не принадлежу к таким людям - я считаю, что принцип make simple things easy and complex things possible вполне осмыслен и гит ему следует. Да, в нём больше complex things - потому что это complex things с чем-то типа svn были вообще либо незовможны, либо делались с помощью лома и такой-то матери.

Что касается "команды git reset, которая потенциально может полностью стереть ваши изменения навсегда" - duh, эта команда для того и предназначена, чтобы стирать изменения! Она и называется reset, а не please-save-my-changes, именно поэтому. Это как жаловаться, что ножом можно порезаться. На то он и нож! А опций у неё много, потому как изменения бывают разные - которые только внесли в файлы? Которые собрались коммитить? Которые уже закоммитили? Разным изменениям - разные опции. Не нужно - не пользуйтесь, запомните один reset --hard и в 90% достаточно. Можно даже алиас прописать, если руки устают набирать.

Date: 2012-02-02 06:56 am (UTC)
From: [identity profile] kaathewise.livejournal.com
Подписываюсь под каждым словом. Еще бы хотел добавить, что у команды git reset три подвида делают не "совершенно разную работу", как пишет avva, ведь следующая команда включает в себя предыдущую, и все что они все делают - это 3 ступени отката коммита.

Date: 2012-02-02 07:08 am (UTC)
From: [identity profile] yan.livejournal.com
Daily git tips: а что же, там в самом деле все советы всегда новые? У меня вот стоит на машине fortune, так и она повторяется.

Date: 2012-02-02 07:25 am (UTC)
From: [identity profile] zelych.livejournal.com
Отличная статья.
git'ом больше года пользуюсь и никогда не читал никаких толстых мануалов про него. И, помнится, только после этой статьи наконец понял про The Three Trees of Git и перестал каждый раз гуглить "git revert last commit".

При этом, естественно, я не утверждаю, что понимаю все тонкости использования reset, да и каких-то сложных случаев использования у меня в практике не было.

Date: 2012-02-02 07:31 am (UTC)
From: [identity profile] plakhov.livejournal.com
Угу, и не поймут. Это люди, лишенные чувства собственной смертности, я им иногда завидую.

Date: 2012-02-02 07:53 am (UTC)
From: [identity profile] emdin.livejournal.com
Гитом я научился пользоваться примерно за два дня. Clearcase я изучал на двухнедельных курсах, что не мешало раз в несколько месяцев сталкиваться с проблемами и ошибками, которые можно было разрешить только с помощью специально обученных людей из build coordination center. В корпоративном руководстве по СС было несколько команд, про которые просто было написано -- "не использовать, опасно". Правда, теперь всё понятно?

Date: 2012-02-02 07:55 am (UTC)
From: [identity profile] vasaku.livejournal.com
при всей извращенности, git вышел пригоднее для дела чем все остальное. он даже как svn клиент лучше всех родных svn клиентов.

Date: 2012-02-02 08:04 am (UTC)
From: [identity profile] janatem.livejournal.com
Вопрос в том, чтобы отобразить набор понятий гита в команды и сделать это интуитивно понятно? Если так, то я соглашусь, что здесь есть над чем работать. (Вместо git reset --hard говорить git hard-reset?) Но это не очень важно, можно привыкнуть и к этой странной конвенции или даже налепить своих алиасов на основные операции.

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

Действительно, как было отмечено выше, бо́льшая часть функциональности гита — не для каждодневного использования. Чтобы снять тот же слой функциональности, что предоставляет, например, subversion, достаточно изучить примерно такой же объем мануалов. И только если захочется странного, придется потрудиться. Мне как-то понадобилось разобраться, как превращать поддиректории в ветки и наоборот (в subversion такая проблема вообще не стоит, поскольку там нет понятия ветки; ветка (и тег) — это всего лишь конвенциональная поддиректория). Я реально убил день, вкуривая мануалы, но в конце-концов научился это делать. Причем реальность (да, я использую именно слово «реальность», а не «особенности реализации», «идеология системы» и т.д.) такова, что инструменты, необходимые для этого, вроде бы простого, действия, настолько мощны, что позволяют произвести любое мыслимое преобразование над деревом объектов, и, как следствие, довольно сложны. Если бы идеология диктовала иметь отдельный инструмент для каждого из подобных действий, то пришлось бы заводить их тысячами. Такая политика годится лишь для VCS с сильно редуцированной функциональностью, благо их уже существует множество на любой вкус.

Date: 2012-02-02 08:24 am (UTC)
From: [identity profile] kingoleg.livejournal.com
Не зачет

Date: 2012-02-02 08:29 am (UTC)
develop7: (Default)
From: [personal profile] develop7
Слишком много усилий для освоения второстепенного инструмента, в затылок которому дышит толпа аналогов. А под Mercurial есть hg-git, который позволяет вообще не менять хостинг репозиториев.

Date: 2012-02-02 08:37 am (UTC)
develop7: (Default)
From: [personal profile] develop7
Я не пойму вот чего. Почему для того, чтобы эффективно и осознанно пользоваться VCS с якобы «редуцированной функциональностью», изучать их внутреннее устройство абсолютно не обязательно?

Date: 2012-02-02 08:38 am (UTC)
From: [identity profile] amosk.livejournal.com
Вы еще скажите что айфон лучше андроида.

Date: 2012-02-02 08:39 am (UTC)
develop7: (Default)
From: [personal profile] develop7
и каждый пользователь, который не разбирается в этих тонкостях, пишет о git книгу, название которой начинается с «Pro»(fessional)?

Date: 2012-02-02 08:44 am (UTC)
develop7: (Default)
From: [personal profile] develop7
это здесь каким боком?
Edited Date: 2012-02-02 08:44 am (UTC)

Date: 2012-02-02 08:51 am (UTC)
From: [identity profile] janatem.livejournal.com
Пинок git'у с другой стороны — хочу, чтоб добавили команду git copy.

Date: 2012-02-02 08:55 am (UTC)
From: [identity profile] pilpilon.livejournal.com
Вим лучше емакса!

про каждый правда есть толстая книжка для профессионалов, обе поверхностные.

Date: 2012-02-02 08:57 am (UTC)
From: [identity profile] janatem.livejournal.com
> изучать их внутреннее устройство абсолютно не обязательно
Это ложное утверждение. По крайней мере, если под "внутренним устройством" понимается набор базовых понятий: что такое репозиторий, комит, слияние и каковы отношения между ними, что вообще хранится в репозитории и т.п.

Date: 2012-02-02 08:58 am (UTC)
From: [identity profile] amosk.livejournal.com
Ну как же - тот же уровень аргументации.

И гит и меркуриал одинаково легки для начинающих.
Когда кто-то заводит шарманку про превосходство одного над другим по легкости изучения, я всегда ржу, так же когда кто-то сравнивает что круче айфоны или андроиды.
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 05:44 am
Powered by Dreamwidth Studios