Основы работы с системами контроля версий и GitHub

Что такое Git?

Git -- система управления версиями (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?

Представьте, что вы с коллегами вместе пишете научную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят. Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста -- последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:

  • ваша папка на компьютере - это не просто папка, а локальный репозиторий
  • она является копией удаленного репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket)
  • если вы работаете над проектом с коллегами, то своя локальная копия есть у каждого
  • когда вы внесли некоторое количество изменений, вы можете их сохранить, и это дествие запишется в журнал; это называется commit
  • после этого можно отправить изменения в удаленный репозиторий; это называется push
  • актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удаленном репозитории
  • если вы увидели, что ваши коллеги запушили в удаленный репозиторий что-то новенькое, то можно (и нужно!) скопировать это себе на компьютер; это называется pull

Чем-то похоже на Dropbox, GoogleDrive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.

Понятно, что для совместной работы над текстом научной статьи вполне хватит и GoogleDocs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что

  • позволяют работать над проектом в команде;
  • вы видите, кем и когда были внесены те или иные изменения;
  • их всегда можно откатить назад;
  • вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
  • ваши наработки полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
  • GitHub позволяет не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.

Существует много систем управления версиями, но мы будем пользоваться самой распространенной -- git. Скачать ее можно отсюда; кроме того, на сайте гита есть русскоязычный учебник.

Но это еще не всё. Нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы - это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для гита, например:

Вы можете пользоваться любым гит-клиентом и даже командной строкой, но в рамках этого курса нам будет достаточно функционала сайта github.com, где есть спецальные кнопочки для загрузки, создания, редактирования и удаления файлов.

Регистрация на GitHub

Каждому понадобится аккаунт на этом веб-хостинге для сдачи домашних заданий. Чтобы зарегистрироваться, идём сюда, выбираем любое имя пользователя и пароль, и готово! Почту при регистрации можно указывать любую. Теперь у вас есть собственная страничка: 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

Markdown -- это упрощенный язык разметки, который преобразует (почти) обычный текст в html-страницу. Создан в 2004 году Джоном Грубером и Аароном Шварцем, затем был дополнен и адаптирован для различных приложений.

Markdown-файлы имеют расширение .md или .markdown

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

1. Форматирование в Markdown

Заголовки в Markdown выделяются решетками #:

# заголовок 1 уровня
## заголовок 2 уровня
...
###### заголовок 6 уровня

Чтобы выделить текст курсивом, нужно поставить в начале и в конце фрагмента текста * или _ (не отделяя пробелом):

*звезды* или _нижние подчеркивания_

звезды или нижние подчеркивания

Чтобы сделать текст жирным, нужно поставить в начале и в конце фрагмента текста ** или __ (не отделяя пробелом):

**две звезды** или __два нижних подчеркивания__

две звезды или два нижних подчеркивания

Чтобы перечеркнуть текст, используйте ~~ в начале и в конце (не отделяя пробелом):

~~две тильды~~

две тильды

Списки

Нумерованные списки задаются так (уровни можно задать отступами):

1. первый элемент
2. второй элемент
3. третий элемент
4. четвертый элемент
1. пятый элемент
  1. первый элемент
  2. второй элемент
  3. третий элемент
  4. четвертый элемент
  5. пятый элемент

Маркированные списки задаются с помощью дефисов, астерисков или плюсов (уровни можно задать отступами):

+ первый элемент
- второй элемент
+ третий элемент
  - четвертый элемент
  * пятый элемент
  • первый элемент
  • второй элемент
  • третий элемент
    • четвертый элемент
    • пятый элемент

2. Объекты

Ссылки

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

<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
да нет не знаю
не знаю нет да
нет не знаю да
нет да не знаю
да не знаю нет
не знаю да нет

3. Где можно использовать Markdown?

  • GitHub
  • Telegram
  • Tumblr
  • R, Python ...

4. Полезные (и не очень) ссылки

Изначальная страница проекта (сейчас неактивна)
Наиболее полное руководство
Cheatsheet (сжатый конспект)
Help от гитхаба
Фичи для продвинутых от гитхаба
Вдохновляющий набор расширений и приложений, где используется Markdown (там есть, в том числе, про то, как делать презентации и документы, а также писать красивые письма)
Курс на codeacademy

results matching ""

    No results matching ""