Git -- система управления версиями (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?
Представьте, что вы с коллегами вместе пишете научную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят. Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста -- последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:
- ваша папка на компьютере - это не просто папка, а локальный репозиторий
- она является копией удаленного репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket)
- если вы работаете над проектом с коллегами, то своя локальная копия есть у каждого
- когда вы внесли некоторое количество изменений, вы можете их сохранить, и это дествие запишется в журнал; это называется commit
- после этого можно отправить изменения в удаленный репозиторий; это называется push
- актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удаленном репозитории
- если вы увидели, что ваши коллеги запушили в удаленный репозиторий что-то новенькое, то можно (и нужно!) скопировать это себе на компьютер; это называется pull
NB! Вот тут шпаргалка по командной строке (для работы с git не только).
Чем-то похоже на Dropbox, GoogleDrive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.
Понятно, что для совместной работы над текстом научной статьи вполне хватит и GoogleDocs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что
- позволяют работать над проектом в команде;
- вы видите, кем и когда были внесены те или иные изменения;
- их всегда можно откатить назад;
- вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
- ваши наработки полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
- GitHub позволяет не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.
Существует много систем управления версиями, но мы будем пользоваться самой распространенной -- git. Скачать ее можно отсюда; кроме того, на сайте гита есть русскоязычный учебник.
Надо нажать на Windows прямо под большой надписью Downloads (тут же можно выбрать MacOs X и Linux, если это понадобилось, а способ ниже не помог). После запуска приложения нажать на странице лицензии "Next", в окошке с галочками, чтобы вы ни выбрали, это не повлияет на изучение нашего курса -- посмотрите, что вам удобнее. Еесли любите называть/писать на русском языке, то поставьте галочку возле TrueType fonts (это внизу списка).
Далее будет окно выбора текстового редактора:
- Notepad++ -- возможно, придется установить самостоятельно, но он простой и удобный;
- Nano - консольный текстовый редактор, проще vim, там подписаны действия (^? - это одновременное нажатие клавиш Сtrl и ?);
- Vim – сложный, но предалагается по умолчанию (а на mac os x и linux выбрать иное не дают), да и на компьютерах на Старой Басманной он используется.
В следующем окне выбирайте "Use Git from Windows Command Prompt", а затем в окне далее "Use OpenSSH", потом "Use the OpenSSL library", затем "Checkout as-is, commit Unix-style line endings", после "Use Windows' default console window". В онке с тремя квадратиками лучше на всякий случай выбрать все, а далее "Install".
После установки git необходимо его настроить, это делается с помощью двух команд:
git config --global user.name "ваш логин на github"
git config --global user.email "почту, которую указали при регистрации на GitHub.com"
- Если у вас MacOs, то напишите в терминал команду git, и система начнет сама ее устанавливать.
- Если y вас Linux и git не был установлен с системой, то можно его установить с помощью пакетного менеджера:
sudo apt-get install git (для Ubuntu и Debian)
Но это еще не всё. Нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы - это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для гита, например:
Каждому понадобится аккаунт на этом веб-хостинге для сдачи домашних заданий. Чтобы зарегистрироваться, идём сюда, выбираем любое имя пользователя и пароль, и готово! Почту при регистрации можно указывать любую. Теперь у вас есть собственная страничка: 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
- Создаем репозиторий на GitHub, как описано выше
- На своем компьютере открываем терминал (cmd на Windows, terminal на OS X, можно найти через поиск) и переходим в ту папку, в которую хотим склонировать репозиторий. Переход выполняется с помощью команды
cd path
, где path -- путь к папке, куда будем клонировать репозиторий - Затем набираем в терминале
git clone link.git
, где link.git -- это ссылка на ваш репозиторий. Можно скопировать ее на главной странице репозитория (зеленая кнопка "Clone or download") - Теперь можно проверить, что в папке, в которую переходили в п.2, появилась новая папка, которая назвается так же, как и репозиторий на гитхабе. Это локальный репозиторий.
- После того, как вы сделали в локальном репозитории какие-то изменения, их нужно отправить на GitHub. Сначала переходим в терминале в репозиторий с помощью команды
cd
- Дальше добавляем изменения:
git add filename
, где filename -- это имя файла, который нужно добавить, илиgit add *
, если нужно добавить все изменения. Изменения -- это не только создание нового файла, но и редактирование уже имеющихся, а также удаление и переименование. - Теперь записываем изменения в журнал:
git commit -m "Commit message"
. Сообщение должно коротко и понятно описывать изменения, которые вы вносите -- это поможет вам и вашим коллегам разобраться, что и на каком этапе произошло с проектом. Поверьте, адекватные описания коммитов -- это очень важно!
Сообщение писать обязательно! Если вдруг забудете, то попадете в страшное место Vim, из которого очень сложно выбраться! Если вдруг попали -- процедура спасения описана в файле cmd_cheatsheet :) - И, наконец, отправляем это все в удаленный репозиторий, то есть на GitHub:
git push
. После этого нужно будет ввести имя пользователя и пароль от гитхаба. Когда вы вводите пароль, он не отображается -- так и должно быть! - Важно: перед тем, как пушить какие-то изменения в удаленный репозиторий, нужно сначала проверить, не появилось ли там чего-то новенького, что вы еще не успели скопировать себе на компьютер (соавторы проекта внесли изменения, вы сами что-то сделали на сайте и т.д.), иначе возникнет конфликт версий -- это не то чтобы сложно исправить, но пока вам лишних проблем не нужно. Изменения из удаленного репозитория в локальный переносятся командой
git pull
. - После того, как сделали
git pull
, можно спокойно выполнять пункты 6-8.
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