Почему я ненавижу Git или Git не должен быть таким сложным для изучения

в 9:35, , рубрики: Git, метки:

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

Возможности Git'а дают гибкость, которой нет у других. Но вместе с этим появляются и сложности. Будучи мощной системой, не все программисты с первого раза понимают что это, и как это работает:

Почему я ненавижу Git или Git не должен быть таким сложным для изучения

Дело усложняется еще и тем, что документация Git не блещет своей изящностью. Американские программисты даже говорят так:

The man pages are one almighty “fuck you”

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

Почему я ненавижу Git или Git не должен быть таким сложным для изучения

Признаться, автор этих строк и сам был невысокого о себе мнения и смотрел на профессионалов Git как на богов (или мне казалось, что они профессионалы). Но однажды мне попалась интересная статья "10 Things I Hate About Git" и я понял, что я не был одинок и не я один считал Git довольно запутанной системой. Где-то я встречал упоминание о том, что кому-то потребовалось два года на то, чтобы понять как работает Git и чувствовать себя с ним комфортно.

Так что же плохого в Git и за что его можно ненавидеть? Приведу из вышеупомянутой статьи несколько пунктов (для быстрого ознакомления, если кто-то хочет больше деталей, то может прочитать статью на англ.языке):

1. Сложная информационная модель

(фанаты subversion негодуют).

2. Сложный командный синтаксис

(об этом еще чуть ниже).

3. Отстойная документация.

Так и есть, тут можно поподробнее. Автор статьи приводит такой пример для команды git-push (попробуйте понять с первого раза без перевода):

git-push – Update remote refs along with associated objects

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

Или, скажем, такой шедевр:

git-rebase – Forward-port local commits to the updated upstream head

Человеческий перевод: последовательно повторить серию коммитов таким образом, чтобы они были применены к текущей ветке.

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

Базовая команда Бесполезная функциональность Полезная команда Полезная функциональность
git branch foo Создает ветку, но не переключается на нее git checkout -b foo Создает ветку и переключается на нее
git add Ничего не делает, выводит предупреждение git add . Добавляет изменения в текущем каталоге

И т.д.

Часть 2. Как все работает или знаешь ли ты Git так, как знаю его я

У начинающего освоение Git займет какое-то время. Но что делать в том случае, если у тебя нет двух лет на то, чтобы понять, как все работает. К счастью я случайно наткнулся на замечательный сайт Think like a Git (думай как Git) и он мне настолько понравился, что я полностью перевел его на русский язык, чем и хочу поделиться с Хабра-общественностью.

Думай как Git, перевод на русский.

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

Я добавил комментарии Disqus к каждой части для того, чтобы новички смогли задавать свои вопросы. Если вы увидите такой вопрос и знаете на него ответ, то не проходите мимо. Это будет хорошим вкладом в общее дело.

Спасибо за внимание, комментарии к переводу лучше писать непосредственно в комментах к каждой части.

Автор: Gangsta

Источник

  1. Сергей:

    долго смотрел на этого GIT-a начал по другому изучать, уж! очень хотелось это освоить, почему другие могут, а сам? сам то чем хужее чёль?
    Начал вот так
    yvsik.ru/github-start/
    А вот так стало проще
    yvsik.ru/git-vs-code-start/

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js