- PVSM.RU - https://www.pvsm.ru -
По работе приходится участвовать в разных проектах, поэтому я хорошо знаю, как работают все мои коллеги. Помню, что компания начала использовать Git буквально за пару недель до моего прихода. На мониторах разработчиков кругом висели наклейки с напоминанием: сначала add, потом коммит, затем пуш.
Они не знали, зачем. Программистам просто сказали строго следовать инструкции, иначе беда. Но проблемы возникали так часто, что я решила провести семинар по Git.
Мне нравится составлять карту в голове. Я не говорю «ментальные карты», потому что это хорошо известный тип диаграмм. Речь о неких картинках, структурах или любом графическом представлении в уме. Например, в детстве я учила арифметику, представляя игральные кубики.
Поэтому я подготовила несколько рисунков. Не обязательно их смотреть, чтобы понять текст. Для каждого есть пояснение.
Кроме того, очень важно научить человека терминам. Иначе он не поймёт сообщения от Git. Рисунки — хороший способ.
На рисунке четыре области распределены следующим образом:
Здесь можно объяснить преимущества распределённой системы управления версиями.
При клонировании данные из удалённого репозитория перемещаются в две области:
В рабочем каталоге два типа файлов:
После подготовки изменений в рабочем каталоге их необходимо добавить в промежуточную область (staging area).
Когда там накопился ряд изменений с общей целью, самое время создать в локальном репозитории коммит с сообщением об этой цели.
Если в локальном репозитории есть один или несколько коммитов, готовых к совместному использованию всем остальным миром, они отправляются в удалённый репозиторий.
В этот момент можно говорить о различных состояниях файла в среде разработки: изменённом, промежуточном (staged) и зафиксированном (commited).
Далее вы можете объяснить:
git diff
git diff --staged
При выполнении git fetch
данные из удалённого репозитория перемещаются только в локальный репозиторий.
При выполнении git pull
данные из удалённого репозитория перемещаются в две области:
fetch
merge
Если важна история коммитов, рассмотрите возможность использования git pull --rebase
. Тогда вместо команд fetch + merge
выполняются команды fetch + rebase
. Ваши локальные коммиты будут воспроизведены, так что вы не увидите в истории коммитов известную форму бриллианта [1].
Можете добавить в среду разработки ещё одну область, чтобы проще прятать накопленные изменения: грязный рабочий каталог.
Когда люди усвоят эти понятия, вам будет легче объяснить дальнейшее: ветви, историю коммитов, перебазировку и так далее, потому что прочный фундамент уже заложен.
Я работала с другими системами управления версиями (Visual SourceSafe, TFS и Subversion): по моему скромному опыту, недостаток знаний вредит и со старым инструментом, и с новым. Сосредоточьтесь не только на выборе инструмента, но и на его освоении.
Мой друг Марк Виллаграса [3] напомнил, что очень полезно решить задачки Git [4] и делиться с коллегами решением.
Ресурсы из комментариев на Hacker News [5]:
Прочитав комментарии на Reddit [18], я подумала, что более точным названием этой статьи было бы «Идея, как научить людей использовать Git», потому что это только идея, которая появилась в моей голове, когда я сама несколько лет назад изучала Git по книге Pro Git [2]. Статья не является полным руководством, лишь отправная точка. Уверена, что все эти ресурсы будут очень полезны. Спасибо!
И спасибо Стюарту Максвеллу [19], который поделился ссылкой на Hacker News, и u/cryptoz [20], который запостил её на Reddit!
Автор: m1rko
Источник [21]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/git/306028
Ссылки в тексте:
[1] форму бриллианта: https://stackoverflow.com/questions/16666089/whats-the-difference-between-git-merge-and-git-rebase
[2] Книга Pro Git: https://git-scm.com/book/en
[3] Марк Виллаграса: https://twitter.com/marcvege
[4] задачки Git: https://www.slideshare.net/raquelmorenocarmena/git-challenges
[5] комментариев на Hacker News: https://news.ycombinator.com/item?id=18919599
[6] Величайшее изобретение Линуса Торвальдса: http://perl.plover.com/yak/git/
[7] Лекция Линуса Торвальдса о Git: https://www.youtube.com/watch?v=4XpnKHJAok8
[8] Linux.conf.au 2013 — Git для детей от 4 лет: https://www.youtube.com/watch?v=1ffBJ4sVUb4
[9] Git от начала до конца: https://jwiegley.github.io/git-from-the-bottom-up
[10] Git от начала до конца (PDF): http://ftp.newartisans.com/pub/git.from.bottom.up.pdf
[11] Изучаем ветвления Git: https://learngitbranching.js.org/
[12] Правила полётов для git: https://github.com/k88hudson/git-flight-rules
[13] Пакет Emacs: Magit: https://magit.vc/
[14] Как написать хорошее сообщение для коммита: https://chris.beams.io/posts/git-commit/
[15] Станьте гуру git: https://www.atlassian.com/git/tutorials
[16] Погружение в Git: http://gitimmersion.com/
[17] Udacity: как использовать Git и GitHub: https://eu.udacity.com/course/how-to-use-git-and-github--ud775#
[18] комментарии на Reddit: https://www.reddit.com/r/programming/comments/agko6r/how_to_teach_git/
[19] Стюарту Максвеллу: https://stuartm.com/
[20] u/cryptoz: https://www.reddit.com/user/cryptoz
[21] Источник: https://habr.com/ru/post/437000/?utm_campaign=437000
Нажмите здесь для печати.