Git -- система управления версиями (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?
Представьте, что вы с коллегами вместе пишете научную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят. Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста -- последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:
- ваша папка на компьютере - это не просто папка, а локальный репозиторий
- она является копией удаленного репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket)
- если вы работаете над проектом с коллегами, то своя локальная копия есть у каждого
- когда вы внесли некоторое количество изменений, вы можете их сохранить, и это дествие запишется в журнал; это называется commit
- после этого можно отправить изменения в удаленный репозиторий; это называется push
- актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удаленном репозитории
- если вы увидели, что ваши коллеги запушили в удаленный репозиторий что-то новенькое, то можно (и нужно!) скопировать это себе на компьютер; это называется pull
Чем-то похоже на Dropbox, GoogleDrive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.
Понятно, что для совместной работы над текстом научной статьи вполне хватит и GoogleDocs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что
- позволяют работать над проектом в команде;
- вы видите, кем и когда были внесены те или иные изменения;
- их всегда можно откатить назад;
- вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
- ваши наработки полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
- GitHub позволяет не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.
Существует много систем управления версиями, но мы будем пользоваться самой распространенной -- git. Скачать ее можно отсюда; кроме того, на сайте гита есть русскоязычный учебник.
Но это еще не всё. Нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы - это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для гита, например:
Вы можете пользоваться любым гит-клиентом и даже командной строкой, но в рамках этого курса нам будет достаточно функционала сайта github.com, где есть спецальные кнопочки для загрузки, создания, редактирования и удаления файлов.
Каждому понадобится аккаунт на этом веб-хостинге для сдачи домашних заданий. Чтобы зарегистрироваться, идём сюда, выбираем любое имя пользователя и пароль, и готово! Почту при регистрации можно указывать любую. Теперь у вас есть собственная страничка: https://github.com/username
После регистрации вы попадете на приветственную страницу, где сначала нужно, ничего не меняя, нажать зеленую кнопку Continue, а потом_ _Skip this step (но если не лень, можно заполнить опросник и нажать Submit).
Когда вы подтвердите свой e-mail, появится вот такая страничка -- это значит, можно начинать работу. :)
Чтобы создать репозиторий, нажимаем кнопку **Start a project **и выбираем название. Оно может быть любым, но должно отражать суть того, что лежит внутри, например, "homeworks". Впрочем, гитхаб предлагает более креативные варианты. :) Также в специальном поле можно добавить описание.
Наш репозиторий должен быть публичным; также важно поставить галочку рядом с **Initialize this repository with a README **-- за этой фразой скрывается команда init, которая превращает пустую папку в git-проект. После этого можно смело жать кнопку Create repository. Вы увидите список файлов в своем репозитории (пока это только автоматически сгенерированный файл README с описанием проекта) и содержание README, если он есть. Ссылка на репозиторий будет выглядеть так: https://github.com/username/your_repo_name.git
Теперь давайте создадим на компьютере новый текстовый документ с сообщением _Hello world! _и загрузим его в свой репозиторий. Для этого нужно нажать кнопку Upload files на странице репозитория.
GitHub поддерживает функцию drag-and-drop, так что дальше всё предельно просто. Эти изменения, как и любые другие, нужно записать в журнал версий, т.е. закоммитить -- для этого есть соответствующая кнопка. Самое главное здесь -- это написать commit message, чтобы сразу было понятно, какие изменения вы внесли.
Поверьте, адекватные описания коммитов -- это очень важно!
Markdown -- это упрощенный язык разметки, который преобразует (почти) обычный текст в html-страницу. Создан в 2004 году Джоном Грубером и Аароном Шварцем, затем был дополнен и адаптирован для различных приложений.
Markdown-файлы имеют расширение .md или .markdown
Ниже в серых блоках содержится то, как выглядит текст на стадии разметки, сразу после блока находится результат.
Заголовки в Markdown выделяются решетками #:
# заголовок 1 уровня
## заголовок 2 уровня
...
###### заголовок 6 уровня
Чтобы выделить текст курсивом, нужно поставить в начале и в конце фрагмента текста * или _ (не отделяя пробелом):
*звезды* или _нижние подчеркивания_
звезды или нижние подчеркивания
Чтобы сделать текст жирным, нужно поставить в начале и в конце фрагмента текста ** или __ (не отделяя пробелом):
**две звезды** или __два нижних подчеркивания__
две звезды или два нижних подчеркивания
Чтобы перечеркнуть текст, используйте ~~ в начале и в конце (не отделяя пробелом):
~~две тильды~~
две тильды
Нумерованные списки задаются так (уровни можно задать отступами):
1. первый элемент
2. второй элемент
3. третий элемент
4. четвертый элемент
1. пятый элемент
- первый элемент
- второй элемент
- третий элемент
- четвертый элемент
- пятый элемент
Маркированные списки задаются с помощью дефисов, астерисков или плюсов (уровни можно задать отступами):
+ первый элемент
- второй элемент
+ третий элемент
- четвертый элемент
* пятый элемент
- первый элемент
- второй элемент
- третий элемент
- четвертый элемент
- пятый элемент
Ссылки и адреса электронной почты можно вставить без всего или в угловых скобках:
<https://www.markdownguide.org>
https://www.markdownguide.org
<[email protected]>
[email protected]
https://www.markdownguide.org
https://www.markdownguide.org
[email protected]
[email protected]
Если нужно сделать гиперссылку, то она оформляется так:
[текст](https://www.markdownguide.org)
Можно добавить всплывающий при наведении комментарий:
[текст](https://www.markdownguide.org "это поможет")
Чтобы вставить картинку, нужно написать следующую строку (без пробелов):
![](ссылка на картинку)
Например:
![](http://3.bp.blogspot.com/-_DLc3qDxsNA/VenIznBsK7I/AAAAAAAAB0A/GHjI_97B364/s1600/TheFunk.jpg)
Строки в таблице разделяются переходом на новую строку, столбцы вертикальной чертой (|)
Между заголовком и телом таблицы вставляется строка с --- в каждой ячейке. Выравнивание задается положением двоеточия:
1|2|3
---|:---:|---:
да|нет|не знаю
не знаю|нет|да
нет|не знаю|да
нет|да|не знаю
да|не знаю|нет
не знаю|да|нет
1 | 2 | 3 |
---|---|---|
да | нет | не знаю |
не знаю | нет | да |
нет | не знаю | да |
нет | да | не знаю |
да | не знаю | нет |
не знаю | да | нет |
- GitHub
- Telegram
- Tumblr
- R, Python ...
Изначальная страница проекта (сейчас неактивна)
Наиболее полное руководство
Cheatsheet (сжатый конспект)
Help от гитхаба
Фичи для продвинутых от гитхаба
Вдохновляющий набор расширений и приложений, где используется Markdown (там есть, в том числе, про то, как делать презентации и документы, а также писать красивые письма)
Курс на codeacademy