diff --git a/.gitignore b/.gitignore
index 5b6a065..94a8c85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
.Rhistory
.RData
.Ruserdata
+__pycache__/
diff --git a/01-01-about.Rmd b/01-01-about.Rmd
index d76277f..a202c09 100644
--- a/01-01-about.Rmd
+++ b/01-01-about.Rmd
@@ -16,7 +16,7 @@ Git автоматически отслеживает изменения во в
{width=400px style="border: 1px solid #ddd"}
:::
-Важная особенность Git в том, что участники могут работать и создавать версии независимо друг от друга на своих компьютерах. Каждый может работать над своей задачей, не мешая другим, даже если все редактируют один и тот же файл. Git поможет объединить изменения в одну общую версию.
+Важная особенность Git в том, что пользователи могут работать и создавать версии независимо друг от друга на своих компьютерах. Каждый может работать над своей задачей, не мешая другим, даже если все редактируют один и тот же файл. Git поможет объединить изменения в одну общую версию.
```{r, include=FALSE}
# Особенность звучит так себе, но ветки это реально основная фича Git.
diff --git a/01-02-install.Rmd b/01-02-install.Rmd
index 9c4f972..520d7b4 100644
--- a/01-02-install.Rmd
+++ b/01-02-install.Rmd
@@ -3,14 +3,14 @@
## Проверьте наличие Git {#terminal}
В комплекте с дистрибутивом Git устанавливается программа для терминала.
-Чтобы её запустить, откройте Rstudio и в верхнем меню выберите **Tools → Terminal → New Terminal**.
+Чтобы открыть терминал в Positron, вызовите поиск команд комбинацией клавиш Ctrl + Shift + P, найдите и выберите **Terminal: Create New Terminal**.
В появившемся окне терминала введите команду `git` и нажмите клавишу Enter.
Если вы видите результат как на скриншоте ниже, то Git установлен.
Иначе нужно его установить --- см. инструкцию для вашей операционной системы ниже.
-После установки перезапустите RStudio и повторите проверку.
+После установки перезапустите Positron и повторите проверку.
-{width="100%"}
+{width="100%"}
## Windows
diff --git a/01-03-shell.Rmd b/01-03-shell.Rmd
index 5bd75b6..20f71a7 100644
--- a/01-03-shell.Rmd
+++ b/01-03-shell.Rmd
@@ -4,13 +4,14 @@
Команды для терминала вы встретите в документации и в интернете, ими легко поделиться и использовать в скриптах.
Кроме терминала есть много других способов и их даже можно использовать одновременно.
-Графические интерфейсы --- все они имеют ограничения и реализуют только часть возможностей Git, но достаточны для решения большинства задач. Это может быть интерфейс, встроенный в другие программы (например [RStudio](https://docs.posit.co/ide/user/ide/guide/tools/version-control.html), [Pycharm](https://www.jetbrains.com/help/pycharm/using-git-integration.html), [VS Code](https://code.visualstudio.com/docs/sourcecontrol/overview)) или самостоятельная программа (например [GitHub Desktop](https://github.com/apps/desktop), [GitKraken](https://www.gitkraken.com) [и многие другие](https://git-scm.com/downloads/guis));
+Графические интерфейсы --- все они имеют ограничения и реализуют только часть возможностей Git, но достаточны для решения большинства задач. Это может быть интерфейс, встроенный в другие программы (например [Positron](https://positron.posit.co/git.html), [Pycharm](https://www.jetbrains.com/help/pycharm/using-git-integration.html), [VS Code](https://code.visualstudio.com/docs/sourcecontrol/overview), [RStudio](https://docs.posit.co/ide/user/ide/guide/tools/version-control.html)) или самостоятельная программа (например [GitHub Desktop](https://github.com/apps/desktop), [GitKraken](https://www.gitkraken.com) [и многие другие](https://git-scm.com/downloads/guis));
Веб-интерфейсы --- прямо на сайте GitHub можно редактировать отдельные файлы, а также выполнять некоторые команды.
-В этом курсе мы будем работать с Git одновременно в интерфейсе RStudio и в терминале, как это делает большинство пользователей R каждый день, а также через GitHub.
-Поэтому запомните, как запустить терминал в RStudio ---
-в верхнем меню выберите **Tools → Terminal → New Terminal** ([см. скриншот в предыдущей главе](#terminal)).
+В этом курсе мы будем работать с Git одновременно в интерфейсе Positron и в терминале, как это делает большинство пользователей каждый день, а также через GitHub.
+К терминалу можно вернуться в любой момент, переключаясь между вкладками **(1) CONSOLE** и **(2) TERMINAL** на нижней панели Positron.
+
+{width="100%"}
Перед началом работы необходимо сделать несколько настроек.
Укажите свое имя и адрес электронной почты, чтобы Git верно записывал информацию об авторе изменений.
diff --git a/02-01-init.Rmd b/02-01-init.Rmd
index 436f077..97947b8 100644
--- a/02-01-init.Rmd
+++ b/02-01-init.Rmd
@@ -7,35 +7,19 @@ Git может отслеживать изменения в любой папк
**Репозиторий** --- это скрытая подпапка `.git`, в которой хранятся версии проекта и информация об изменениях.
Всё необходимое для работы Git содержится непосредственно в ней.
-Самый простой способ создать репозиторий --- вместе с проектом RStudio.
-В верхнем меню выберите [File → New Project]{.figtext}.
-В появившемся окне выберите [New directory]{.figtext}, а затем [New Project]{.figtext}.
-На последнем шаге в поле [Directory name]{.figtext} введите название папки для проекта: [penguins]{.figtext}.
-Она будет создана на вашем компьютере по адресу, указанному в поле [Create project as subdirectory of]{.figtext}.
-‼️ Не забудьте поставить галочку напротив опции [ Create a git repository]{.figtext}, иначе проект будет создан без Git репозитория.
-После нажатия кнопки [Create Project]{.figtext} окно RStudio перезагрузится с открытым проектом.
-
-
-
-При следующем запуске RStudio откроет последний проект.
-Если этого не произойдет, чтобы открыть проект в верхнем меню выберите [File → Open Project]{.figtext} или [File → Recent Projects]{.figtext}.
-
-Убедитесь в том, что проект загружен, для этого обратите внимание на следующие элементы интерфейса:
-В правом верхнем углу указано название проекта [(A)]{.figref}.
-На панели файлов (по умолчанию она в нижнем правом углу) открыта папка с файлами проекта [(B)]{.figref}.
-
-{width="680px"}
-
-Когда в RStudio открыт проект, R и Git ищут файлы в папке проекта --- это так называемая **рабочая папка или рабочая область**.
+Мы продолжим проект из курса «Введение в автоматизацию обработки данных на R». Откройте его в Positron по [инструкции из курса](https://stepik.org/lesson/2482459/step/5?unit=2520221): нажмите [Open]{.figtext} на верхней панели, выберите Open Folder… и найдите нужную папку.
+
+Если проекта нет, создайте его, как показано [в курсе](https://stepik.org/lesson/2482459/step/2?unit=2520221). Затем создайте папку `data`, скачайте файл [`penguins.csv`](https://stepik.org/media/attachments/lesson/2482459/penguins.csv) и поместите его туда.
+
+Убедитесь, что папка открыта: в панели [(1) Explorer]{.figtext} должны быть видны файлы, в том числе папка `data`.
+Откройте пункт [(2) Source Control]{.figtext} на панели слева и нажмите [Initialize Repository]{.figtext}.
+Positron создаст репозиторий в папке проекта. На панели в разделе [Changes]{.figtext} появится список файлов.
+
+Если у вас нет кнопки [Initialize Repository]{.figtext}, [проверьте установку Git](#install).
+
+{width=100%}
+
+Когда в Positron открыт проект, R и Git ищут файлы в ней --- это так называемая **рабочая папка или рабочая область**.
Подробнее про поиск и адреса файлов.
На разных компьютерах, например у разных участников, проект может находиться в разных местах.
@@ -43,10 +27,10 @@ Git может отслеживать изменения в любой папк
а у пользователя `scruz` допустим
`C:\Users\scruz\penguins`.
-Если в скрипте использовать полный адрес файла, например:
+Если в документе использовать полный адрес файла, например:
```r
-read_csv("/Users/mjordan/penguins/data/sample.csv")
+read.csv("/Users/mjordan/r-course/data/penguins.csv")
```
то он будет работать только у пользователя `mjordan`.
@@ -54,19 +38,29 @@ read_csv("/Users/mjordan/penguins/data/sample.csv")
Чтобы он работал у всех, нужно указывать адрес файла относительно рабочей папки.
```r
-read_csv("data/sample.csv")
+read.csv("data/penguins.csv")
```
-Рассмотрим созданные RStudio файлы:
+Внутри папки проекта создана папка репозитория `.git`. Открывать или изменять её содержимое не нужно, поэтому она скрыта. Для работы с репозиторием используют панель [Source Control]{.figtext} и команды в терминале.
-- `hello-git.Rproj` --- содержит настройки проекта
-- `.gitignore` --- содержит список файлов, которые Git не будет отслеживать; о том, зачем это нужно и как настроить [смотри в отдельном разделе](#gitignore)
-- `.git` --- репозиторий; это скрытая папка, чтобы ее увидеть, в меню на панели файлов выберите [More → Show Hidden Files]{.figtext}
+Как увидеть скрытую папку.
+Positron не показывает некоторые служебные папки на панели Explorer.
+Чтобы увидеть их, откройте терминал и выполните команду:
-Если файл `.gitignore` отсутствует, значит, вы не отметили галочку [ Create a git repository]{.figtext} при создании проекта или не установили Git.
-[Проверьте наличие Git](#install) и создайте проект заново.
+```shell
+ls -la
+```
+
+В Windows может потребоваться другая команда:
+
+```powershell
+Get-ChildItem -Force
+```
+
+Появится список файлов проекта, в том числе папка `.git`.
+
-Итак, у нас есть проект RStudio --- папка, в которой мы будем работать, и
+Итак, у нас есть проект --- папка, в которой мы будем работать, и
внутри нее Git репозиторий --- скрытая папка, в которой будут храниться версии проекта.
Приступим к созданию первой версии.
diff --git a/02-02-commit.Rmd b/02-02-commit.Rmd
index 44a2a77..bddfbed 100644
--- a/02-02-commit.Rmd
+++ b/02-02-commit.Rmd
@@ -5,43 +5,26 @@ Git отслеживает изменения в файлах, находящи
а при помощи версий --- или, в терминах Git, **коммитов (commit)**.
Коммиты нужно создавать вручную, выбирая, какие файлы вы хотите зафиксировать, добавив в версию.
-Откройте в RStudio панель с названием [Git]{.figtext} (по умолчанию она в верхнем правом углу).
-В отличие от списка файлов, на ней выводятся только те файлы, которые были изменены по сравнению с последней версией (коммитом).
-Так как мы еще не создали ни одной версии, то в списке выводятся оба файла, созданных с проектом: `.gitignore` и `penguins.Rproj`
-
-
-{width=680px}
-
-Нет панели Git?
-Значит, вы не отметили галочку [Create a git repository]{.figtext} при создании проекта или не установили Git.
-[Проверьте наличие Git](#install) и [создайте проект заново](#git-init).
-
-
-Чтобы создать коммит (версию), отметьте файлы галочкой в столбце [Staged]{.figtext}.
-Галочка напротив файла означает, что он добавлен в **индекс (staging)** ---
-промежуточную область для выбора файлов, которые будут зафиксированы.
-Неотмеченные файлы останутся в рабочей папке, но в коммит не попадут.
-Вы можете добавить их в следующую версию позже или отменить изменения.
-Нажмите кнопку [Commit]{.figtext}.
-
-{width=400px}
-
-В открывшемся окне можно подробнее посмотреть, что изменилось в файлах.
-Просмотрите изменения и введите краткое описание в поле [Commit message]{.figtext}.
-В нашем примере был создан проект, это и будет подходящим описанием.
+Откройте в Positron панель [Source Control]{.figtext}.
+В отличие от панели с файлами [Explorer]{.figtext}, на ней выводятся только те файлы, которые были изменены по сравнению с последней версией (коммитом).
+Так как мы еще не создали ни одной версии, то в списке выводятся все файлы проекта.
+
+Чтобы создать коммит (версию), наведите на заголовок [Changes]{.figtext} и нажмите `+`.
+После этого файлы окажутся в разделе [Staged Changes]{.figtext} --- **индексе (staging)**,
+промежуточной области для выбора файлов, которые войдут в новую версию (коммит).
+Можно добавлять файлы и по одному, нажимая `+` только напротив нужных.
+Файлы, не добавленные в индекс, останутся в рабочей папке, но не войдут в коммит.
+Вы можете добавить их в следующую версию позже или отменить изменения, нажав `↶`.
+
+Введите краткое описание в поле [Message]{.figtext}.
+В нашем примере мы закончили курс R, это и будет подходящим описанием: `Добавил файлы курса по R`.
Нажмите кнопку [Commit]{.figtext} под текстовым полем.
-{width=600px}
-
-В открывшемся окне не должно быть ошибок, но должно быть сообщение как на изображении ниже.
-
-{width=600px}
+{width=100%}
-Закройте окно с сообщением и окно создания коммита, вернитесь к RStudio.
-Обратите внимание, теперь панель [Git]{.figtext} со списком измененных файлов пуста ---
+Обратите внимание, теперь панель [Source Control]{.figtext} со списком измененных файлов пуста ---
это значит, что изменений по сравнению с последней версией, которую мы только что создали, нет.
-{width=400px}
Теперь у нас есть версия проекта, к которой можно вернуться в любой момент и начать работу с этого места.
diff --git a/02-03-practice.Rmd b/02-03-practice.Rmd
index a30a426..7109834 100644
--- a/02-03-practice.Rmd
+++ b/02-03-practice.Rmd
@@ -24,85 +24,98 @@
## Импорт данных
-Загрузите файл с данными [penguins.csv](https://github.com/yoursdearboy/git-101/releases/download/penguins/penguins.csv) в папку проекта.
-Если нужно открыть папку в файловом менеджере операционной системы, в меню на панели [Files]{.figtext} выберите [More → Show Folder in New Window]{.figtext}.
-Вернитесь в RStudio и убедитесь, что файл `penguins.csv` появился на панели [Git]{.figtext}.
-{width=400px}
+Создайте документ Quarto для анализа и сохраните его под названием `paper.qmd` в корне проекта. Вспомнить как это делается можно в [курсе](https://stepik.org/lesson/2482460/step/2?unit=2520222).
+Замените содержимое документа кодом ниже и сохраните файл.
-Создайте скрипт для анализа. В меню на панели [Files]{.figtext} выберите [New File → R Script]{.figtext} и введите название файла `penguins.R`
+````{cat, engine.opts = list(lang = "markdown")}
+---
+title: "Длина клюва пингвинов"
+format:
+ html:
+ embed-resources: true
+---
-{width=400px}
+```{r}
+data <- read.csv("data/penguins.csv")
-Скопируйте следующий код для импорта данных и сохраните его в созданном файле.
-Выделите обе строки и запустите, нажав кнопку [Run]{.figtext} в правом верхнем углу редактора RStudio.
-Если импорт данных работает, в консоли появится вектор из чисел.
-
-```r
-data <- read.csv("penguins.csv")
-data$bill_length_mm
+mean(data$bill_len)
```
+````
+
+Выполните чанк.
+Функция `mean()` вернёт `NA`, потому что в данных нет двух значений длины клюва.
+Пока вы проходили предыдущий курс, мы поймали этих двух пингвинов и измерили их клювы.
+Скачайте [обновлённые данные](https://raw.githubusercontent.com/yoursdearboy/git-101/positron/course-project/updates/penguins.csv) и замените ими файл `data/penguins.csv`. Снова выполните чанк и убедитесь, что средняя длина клюва равна `43.91802`.
+
+На панели [Source Control]{.figtext} появятся два изменения: новый документ `paper.qmd` и обновлённый файл `penguins.csv`.
+Выберите его и проверьте, чем новая версия отличается от прежней:
+строки из старого файла выделяются красным цветом, а из нового зеленым.
-Убедитесь, что файл скрипта также появился на панели [Git]{.figtext}.
-Добавьте оба файла в индекс, отметив галочкой в столбце [Staged]{.figtext}, и создайте коммит.
-В окне коммита обязательно проверьте содержимое скрипта `penguins.R`,
-так как часто пользователи забывают сохранить файл перед добавлением в индекс.
+Добавьте в индекс и документ `paper.qmd`, и обновлённый файл `penguins.csv`: без данных результат анализа нельзя будет воспроизвести.
+Выберите файл `paper.qmd` и проверьте содержимое: если он пустой, вы забыли сохранить файл, а Git работает только с сохраненными изменениями.
+Создайте коммит с описанием «Импортировал данные пингвинов».
-{width=690px}
+{width=100%}
-После создания коммита список измененных файлов на панели [Git]{.figtext} должен быть пуст.
+После создания коммита список изменённых файлов на панели [Source Control]{.figtext} снова должен быть пуст.
## Визуализация
Анализ новых данных полезно начинать с исследования распределения.
-Для этого присвоим данные с длиной клюва переменной `x` и построим несколько вариантов гистограммы с разной шириной столбца.
-Сохраните приведённый ниже код в тот же файл, запустите и посмотрите графики.
+Для этого присвоим данные с длиной клюва переменной и построим несколько вариантов гистограммы с разной шириной столбца.
+Замените код чанка на приведённый ниже, запустите и посмотрите графики.
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+```{r, eval=FALSE}
+data <- read.csv("data/penguins.csv")
-hist(x, breaks = seq(40, 60, 4))
-hist(x, breaks = seq(40, 60, 2))
-hist(x, breaks = seq(40, 60, 1))
-```
+x <- data$bill_len
-После сохранения файл `penguins.R` снова появился в списке изменений на панели [Git]{.figtext}.
-Добавьте его в индекс и проверьте изменения в окне коммита.
+hist(x, breaks = seq(30, 60, 3))
+hist(x, breaks = seq(30, 60, 2))
+hist(x, breaks = seq(30, 60, 1))
+```
-Вы уже могли заметить, что новые строки выделяются зеленым цветом.
-Красным цветом выделяются удаленные строки, а неизмененные остаются белыми.
+Сохраните файл `paper.qmd` и он опять появится в списке изменений на панели [Source Control]{.figtext}.
+Выберите его и проверье изменения: красным - старые строки, зеленым — новые.
Такой формат записи изменений называется **«дифф» (diff)**.
-Обратите внимание, что по умолчанию Git анализирует строки, а не отдельные слова или символы.
-Поэтому получился следующий дифф: старая вторая строка была удалена, новая вторая строка добавлена (см. номера строк слева), хотя мы всего лишь добавили присвоение `x <- ` в начало строки.
-{width=690px}
+Обратите внимание, что по умолчанию Git сравнивает строки, а не отдельные слова или символы.
+Несмотря на то, что мы заменили `mean()` на присвоение `x <- ` в 11-й строке, Git показывает прежнюю строку как удалённую, а новую — как добавленную. Номера слева указывают положение этих строк в старой и новой версиях файла.
-Убедитесь, что сделанные изменения соответствуют диффу на скриншоте выше, и создайте новый коммит с описанием «Добавили гистограммы для длины клюва».
+{width=100%}
+
+Добавьте `paper.qmd` в индекс, введите описание «Добавил гистограммы для длины клюва» и нажмите [Commit]{.figtext}.
+После создания коммита список изменённых файлов снова должен быть пуст.
## Экспорт
Гистограмма с шириной столбца 2 выглядит наиболее информативно.
-Такой график можно и опубликовать.
-Чтобы экспортировать изображение, сохраните следующий код в файл скрипта и запустите его.
+Соберём HTML-отчёт, чтобы поделиться с коллегами.
+
+Оставьте в коде чанка только один вариант гистограммы и сохраните файл.
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+```{r, eval=FALSE}
+data <- read.csv("data/penguins.csv")
-png("penguins-hist.png")
-hist(x, breaks = seq(40, 60, 2))
-dev.off()
+x <- data$bill_len
+
+hist(x, breaks = seq(30, 60, 2))
```
-После этого в списке изменений на панели [Git]{.figtext}, кроме файла `penguins.R`, появился файл с изображением `penguins-hist.png`.
+Нажмите [Preview]{.figtext} вверху окна редактора.
+В корне проекта появится файл `paper.html`.
Его мы тоже добавим в коммит.
-Во-первых, так другие участники, загрузив проект, сразу увидят результат без необходимости запускать скрипт.
+Во-первых, так другие участники, загрузив проект, сразу увидят результат без необходимости выполнять код.
Во-вторых, если вы измените ширину столбца или другие настройки графика, будет удобно сравнить старую и новую версии.
-Добавьте оба файла в индекс, проверьте изменения, изучив дифф, и создайте коммит с описанием «Сохранили гистограмму длины клюва».
+{width=100%}
+
+Добавьте оба файла в индекс и создайте коммит с описанием «Собрал отчёт о длине клюва».
+Проверьте, что на панели [Source Control]{.figtext} не осталось «незакомиченных» изменений.
-На этом остановимся и посмотрим историю версий в журнале Git.
+На этом остановимся и далее посмотрим историю версий в журнале Git.
+А пока несколько советов.
::: {.callout .callout-info}
Делайте коммиты часто и не придавайте слишком большое значение планированию.
diff --git a/02-04-log-n-diff.Rmd b/02-04-log-n-diff.Rmd
index bb88292..5ac5dd9 100644
--- a/02-04-log-n-diff.Rmd
+++ b/02-04-log-n-diff.Rmd
@@ -5,23 +5,20 @@
Журнал позволяет изучить изменения от других участников или вспомнить свои собственные, и зачем они сделаны.
Поэтому так важно писать ясные и содержательные описания коммитов.
Используя журнал, можно найти, когда сделаны изменения, приведшие к ошибке, и вернуть проект к предыдущему состоянию.
-В конце концов, его можно использовать для отчетности и бизнесс-аналитики по проекту.
+В конце концов, его можно использовать для отчетности и бизнес-аналитики по проекту.
-Чтобы открыть журнал, нажмите кнопку [History]{.figtext} на панели [Git]{.figtext}.
+Чтобы открыть журнал, на панели [Source Control]{.figtext} разверните раздел [Graph]{.figtext} внизу.
В открывшемся окне выводится список коммитов в обратном порядке --- последние коммиты находятся вверху.
-В списке выводится краткая информация о коммите, а под списком подробная информация по выделенному коммиту.
-{width=690px}
+При наведении на коммит появляется краткая информация: имя автора, которое [мы указали в настройках](#setup), дата и описание, и самое важное — хэш коммита, его уникальный идентификатор. В примере это `967f8ad`, у вас он будет другим.
-- SHA --- так называемый хэш коммита, который является его уникальным идентификатором в репозитории
-- Author --- автор коммита \, [которые были указаны в настройках](#setup)
-- Date --- дата и время создания коммита
-- Subject --- описание коммита
-- Parent --- хэш (идентификатор) предыдущего коммита
+Кликните на коммит, чтобы посмотреть список изменений. Выберите файл, чтобы открыть дифф --- изменения, сделанные в этом коммите по сравнению с предыдущей версией.
-Еще ниже показан дифф --- изменения, сделанные в этом коммите по сравнению с предыдущим.
-Для больших файлов выводятся только те строки, которые поменялись, а также несколько строк выше и ниже, чтобы был понятен контекст.
-Если нажать кнопку [View file]{.figtext} справа от названия файла, можно увидеть его полное содержимое, каким оно было зафиксировано создания коммита.
+{width=100%}
+
+Если нужна история только одного файла, выберите его на панели [Explorer]{.figtext} и откройте раздел [Timeline]{.figtext} внизу той же панели.
+Выберите коммит, чтобы посмотреть изменения.
+В разделе [Timeline]{.figtext} также есть автоматические контрольные точки, которые создаются при сохранении файла. Они не входят в Git-репозиторий и исчезнут через некоторое время.
Даже если вы работаете в одиночку, полезно иметь под рукой историю изменений.
Но по настоящему эта функция полезна,
diff --git a/03-01-branches.Rmd b/03-01-branches.Rmd
index 6ac3805..8654fcf 100644
--- a/03-01-branches.Rmd
+++ b/03-01-branches.Rmd
@@ -19,60 +19,50 @@ Git позволяет эффективно объединять эти изме
Для этого используются так называемые ветки (branch).
Почему ветки? Потому что начиная с выбранного коммита история изменений разветвляется.
+
+::: {style="float: left; clear: both; width: 200px; margin-right: 20px;"}
+{width=100%}
+:::
+
По умолчанию, мы работаем в ветке `main`
(ранее ветка по умолчанию называлась `master`, будьте готовы встретить и такое название).
Ее можно сравнить со стволом дерева --- вот он слева на изображении.
-В нашем проекте с пингвинами в ветке `main` 4 коммита, последний из которых содержит гистограмму для публикации.
-
-{width=600px}
+В нашем проекте с пингвинами в ветке `main` 4 коммита и от любого из них можно начать новую ветку.
Представим ситуацию --- из журнала приходит ответ Рецензента 2, в котором он просит заменить гистограмму на ящик с усами.
С одной стороны, можно податься в журнал, где знают, что такое гистограмма,
с другой, можно хотя бы попробовать удовлетворить пожелания рецензента и,
-если нам не понравится новая диаграмма, просто удалить изменения.
+если нам не понравится новая диаграмма, просто удалить ветку с изменениями.
# Создание ветки {#git-branch}
Чтобы спокойно поэкспериментировать создадим новую ветку.
Так будет проще удалить изменения и они не будут мешать, если мы захотим поправить что-то действительно важное в основной ветке `main`.
-В RStudio нажмите кнопку [New Branch]{.figtext} [(A)]{.figref}
-
-{width=400px}
-
-В появившемся окне введите название, например `boxplot` и нажмите кнопку [Create]{.figtext}.
-Откроется окно с сообщением, что мы переключились на ветку `boxplot`,
-можете закрыть его кнопкой [Close]{.figtext}.
+В Positron нажмите название текущей ветки `main` в строке состояния внизу окна и выберите [Create new branch…]{.figtext}.
+В появившемся поле введите название, например `boxplot`, и нажмите Enter.
+Positron переключится на новую ветку `boxplot`.
+Обратите внимание, что название ветки в строке состояния поменялось с `main` на `boxplot`.
-{width=200px}
-
-{width=400px}
-
-Обратите внимание, что название ветки на панели [Git]{.figtext}, рядом с кнопкой создания ветки [(A)]{.figref}, поменялось с `main` на `boxplot`.
+{width=100%}
Вернемся к пингвинам.
-Замените содержимое скрипта `penguins.R` на следующее:
+Замените вызов `hist()` в чанке на вызов `boxplot()`:
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+```{r, eval=FALSE}
+data <- read.csv("data/penguins.csv")
+
+x <- data$bill_len
-png("penguins-boxplot.png")
boxplot(x)
-dev.off()
```
-Сохраните файл и выполните скрипт.
-Обратите внмание, что мы поменяли название файла.
-Старый файл `penguins-hist.png` в этой версии нам не нужен и его необходимо удалить.
-Не переживайте, благодаря Git, в основной ветке `main` он останется.
-На панели [Files]{.figtext} отметьте галочкой файл `penguins-hist.png` [(A)]{.figref} и нажмите кнопку [Delete]{.figtext} [(B)]{.figref}.
-
-{width=400px}
+Сохраните файл и нажмите [Preview]{.figtext}, чтобы обновить отчёт `paper.html`.
+Не переживайте, благодаря Git в основной ветке `main` останется прежний вариант с гистограммой.
-Отметьте все изменения для фиксации и создайте коммит.
-Обратите внимание, что удаление файла это тоже изменение, которое надо отметить.
+Отметьте все изменения для фиксации и создайте коммит с описанием «Заменил гистограмму на ящик с усами».
+Обратите внимание, что в коммит должны попасть и исходный документ `paper.qmd`, и обновлённый отчёт `paper.html`.
-{width=400px}
+{width=100%}
Теперь отложим эксперименты и вернемся к прежней версии.
diff --git a/03-02-checkout.Rmd b/03-02-checkout.Rmd
index 9bfc862..934b80c 100644
--- a/03-02-checkout.Rmd
+++ b/03-02-checkout.Rmd
@@ -1,35 +1,40 @@
# Переключение веток {#git-checkout}
-Для переключения ветки нажмите на название текущей ветки [(A)]{.figref} на панели [Git]{.figtext}.
+Для переключения ветки нажмите на название текущей ветки в строке состояния Positron.
В выпадающем списке выберите ветку на которую хотите переключиться (`main`).
-{width=400px}
+{width=100%}
-Убедитесь, что код скрипта вернулся к прежнему состоянию и строит гистограмму,
-а в списке файлов находится файл с гистограммой `penguins-hist.png` и нету файла `penguins-boxplot.png`.
-
-{width=400px}
+Убедитесь, что код документа `paper.qmd` вернулся к прежнему состоянию и вызывает функцию `hist()`,
+а отчёт в окне просмотра строит гистограмму вместо ящика с усами.
Это было просто.
Но есть один случай, когда
Git откажется переключать ветку --- если это приведет к потере данных.
-Например, замените содержимое скрипта `penguins.R` на следующее (добавилась подпись оси X):
+Например, замените код чанка на следующий (добавилась подпись оси X):
+
+```{r, eval=FALSE}
+data <- read.csv("data/penguins.csv")
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+x <- data$bill_len
-png("penguins-hist.png")
-hist(x, breaks = seq(40, 60, 2), xlab = "Bill length, mm")
-dev.off()
+hist(x, breaks = seq(30, 60, 2), xlab = "Bill length, mm")
```
+::: {style="float: left; clear: both; width: 200px; margin-right: 20px;"}
+{width=100%}
+:::
+
Сохраните файл и попробуйте переключиться на ветку `boxplot`.
-Вы получите сообщение как на скриншоте ниже.
-Если бы Git переключил ветку, ему бы пришлось перезаписать файл `penguins.R`, в который мы внесли изменения, но не зафиксировали.
-Поэтому, чтобы не потерять изменения при переключении, сначала необходимо их зафиксировать создав коммит.
+Вы увидите сообщение, как на скриншоте слева.
+Если бы Git переключил ветку, ему бы пришлось перезаписать файл `paper.qmd`, в который мы внесли изменения, но не зафиксировали.
+Positron предлагает временно спрятать изменения (**Stash**), чтобы можно было переключиться.
+Но есть решение лучше — зафиксировать их создав коммит.
+Нажмите **Cancel**, чтобы отменить переключение.
+Добавьте изменения в индекс и создайте коммит с описанием «Добавил подпись оси».
-{width=690px}
+{width=100%}
-Создайте коммит и попробуйте переключиться на ветку `boxplot` и обратно на ветку `main`.
+Попробуйте снова переключиться на ветку `boxplot`.
+На этот раз переключение должно пройти без ошибок (убедитесь, что код в редакторе изменился).
diff --git a/03-03-merge.Rmd b/03-03-merge.Rmd
index ae3cbd4..ab137d5 100644
--- a/03-03-merge.Rmd
+++ b/03-03-merge.Rmd
@@ -1,23 +1,21 @@
# Слияние веток {#git-merge}
-[Откройте окно истории](#git-log) и выберите в фильтре сверху показывать все ветки [(all branches)]{.figtext} и все коммиты [(all commits)]{.figtext}.
-На диграмме наглядно видно почему это называется веткой.
+На панели [Source Control]{.figtext} разверните раздел [Graph]{.figtext} внизу, как показано в главе
+[просмотр истории](#git-log).
+Справа от заголовка [Graph]{.figtext} нажмите [Auto]{.figtext} с иконкой ветки
+и в выпадающем меню выберите [All]{.figtext}.
+Диаграмма покажет обе ветки, и теперь должно быть ясно, почему они так называются.
-{width=690px}
+{width=100%}
-Если мы или другой участник проекта, решим принять эти изменения в основную ветку `main`,
-нам нужно выполнить операцию «слияния» (merge).
-В RStudio нет встроенной возможности слияния веток, это необходимо делать в терминале.
-К счастью, команда совсем не сложная.
+Если мы или другой участник проекта решим принять эти изменения в основную ветку `main`,
+нам нужно выполнить операцию **«слияния» (merge)**.
Для начала переключитесь на ветку, в которую будут вливаться изменения ---
в нашем случае это `main` ([см. переключение веток](#git-checkout)).
-Откройте терминал ^[В меню RStudio выберите Tools → Terminal → New Terminal] и введите команду для слияния с веткой `boxplot`.
+На панели [Source Control]{.figtext} нажмите кнопку с троеточием справа от заголовка [Changes]{.figtext}. Выберите [Branch → Merge…]{.figtext}, а затем --- ветку `boxplot`.
-```sh
-git merge boxplot
-
-```
+{width=100%}
Git попытается автоматически объединить изменения из обеих веток и создать новый коммит.
В большинстве случаев этого достаточно,
@@ -27,69 +25,60 @@ Git попытается автоматически объединить изм
Git предпочтет выдать ошибку и попросит вас разрешить конфликт.
В списке изменений мы видим,
-что Git автоматически выбрал изменения связанные с новым и старым файлом для графика
-`penguins-hist.png` и `penguins-boxplot.png`,
-но лишь частично для скрипта `penguins.R`.
+что Git автоматически добавил в индекс отчёт `paper.html` из ветки `boxplot`,
+но не документ `paper.qmd`, который отмечен восклицательным знаком.
-{width=400px}
+Причина в том, что после изменения кода графика в ветке `boxplot`
+мы изменили ту же строку в ветке `main`.
+Откройте файл `paper.qmd`.
+Git сохранил в нём обе версии кода и разделил их специальными маркерами:
-Причина в том, что мы вносили изменения в код графика в ветке `main` после того как изменили его в ветке `boxplot`.
-Откройте файл `penguins.R`.
-Git любезно оставил для нас обе версии кода разделив специальными символами.
-После строки `<<< HEAD` идет версия из текущей ветки,
-строка `===` отделяет две версии друг от друга,
-а строка `>>> boxplot` завершает версию из ветки `boxplot`.
+- после строки `<<<<<<< HEAD` идёт версия из текущей ветки `main`, выделенная зелёным;
+- строка `=======` отделяет две версии друг от друга;
+- строка `>>>>>>> boxplot` завершает версию из ветки `boxplot`, выделенную синим.
-{width=690px}
+{width=100%}
-Наша задача переписать выделенный участок (строки 4-12) в одну версию и убрать спецсимволы.
-Важно понимать, что Git просто вставил в скрипт кусок текста,
-но это все еще обычный R скрипт и мы должны привести его в рабочее состояние.
+Нам нужно объединить изменения в одну версию и удалить маркеры.
+Важно понимать, что это не часть интерфейса Positron, а обычный текст, который Git вставил прямо в файл.
+Поэтому вместо одной строки у нас теперь пять (строки 13-17) и это не валидный синтаксис R:
+попробуйте нажать **Preview** или выполнить чанк и убедитесь в этом.
-Нам нужна версия из ветки `boxplot`, но мы хотим добавить в нее подпись оси, как это было сделано в ветке `main`.
-Для этого оставим нижнюю версию (строки 9-11) и удалим лишние строки (4-8 и 12)
-и добавим подпись, только для ящика с усами это должна быть подпись оси Y.
-В итоге должен получиться следующий код.
+Приведем документ в рабочее состояние:
+за основу возьмём версию из ветки `boxplot`, но добавим в неё подпись оси из ветки `main`.
+Удалите строки 13-15 со старой версией и разделяющими маркерами.
+Добавьте подпись оси в вызов `boxplot()`.
+У ящика с усами длина клюва показана по оси Y, поэтому для подписи используем аргумент `ylab`.
+Также удалите строку 17 с маркером `>>>>>>>`.
+В итоге должен получиться такой код.
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+```{r, eval=FALSE}
+data <- read.csv("data/penguins.csv")
+
+x <- data$bill_len
-png("penguins-boxplot.png")
boxplot(x, ylab = "Bill length, mm")
-dev.off()
```
-Сохраните файл и выполните скрипт.
-Создайте коммит и
-не забудьте отметить галочкой внесенные изменения,
-в том числе обновившийся файл `penguins-boxplot.png`, который теперь содержит подпись оси.
-Обычно сообщение коммита о слиянии веток содержит следующий текст «Merge branch название-ветки», но можете придумать свое.
+Сохраните файл и нажмите [Preview]{.figtext}, чтобы обновить отчёт.
+Добавьте в индекс изменённые файлы `paper.qmd` и `paper.html`.
+Отчёт обновился, потому что по сравнению с версией из ветки `boxplot` в нём появилась подпись оси.
+Создайте коммит.
+Описание слияния обычно выглядит так: «Merge branch название-ветки»,
+но можете написать своё.
-{width=400px}
+{width=100%}
Итак, мы успешно слили изменения из ветки `boxplot` в основную ветку `main`.
Теперь можно продолжить работу в основной ветке.
Еще лучше будет создать очередную ветку для новых изменений, выполнить работу в ней и точно так же слить в основную.
-{width=690px}
-
-Как удалить ветку?
Слитую ветку можно удалить.
-В RStudio для этого нет встроенных средств, поэтому придется использовать терминал.
-Выполните команду:
+На панели [Source Control]{.figtext} нажмите кнопку с троеточием справа от заголовка [Changes]{.figtext}.
+Выберите [Branch → Delete Branch…]{.figtext}, а затем ветку `boxplot`.
-```sh
-git branch -d boxplot
-```
-
-Если ветка не была слита, Git откажется ее удалять, ведь могут быть потеряны сделанные в ней изменения.
-Если вы действительно уверены, что они вам не нужны и вы хотите удалить не слитую ветку, выполните команду:
-
-```sh
-git branch -D boxplot
-```
-
+Если ветка не была слита, Git предупредит, что при удалении можно потерять сделанные в ней изменения.
+Удаляйте такую ветку только в том случае, если уверены, что изменения больше не нужны.
```{r, include=FALSE}
# Советуем немного попрактиковаться и создать пару веток,
diff --git a/04-01-github.Rmd b/04-01-github.Rmd
index 928b329..20f3502 100644
--- a/04-01-github.Rmd
+++ b/04-01-github.Rmd
@@ -6,34 +6,10 @@ GitHub --- это веб-сервис для хранения Git репозит
Ваши файлы размещаются на удаленном сервере и доступны публично или приватно для загрузки другими пользователями. В некотором смысле это аналог Dropbox или Google Drive для Git.
Помимо хранения репозиториев, GitHub предоставляет другие инструменты: отслеживание задач, обсуждение изменений, запуск тестов и сборок и многое другое.
-Для работы с GitHub вам понадобится зарегистрировать учетную запись и создать токен --- отдельный пароль для Git на вашем компьютере.
-
-## Регистрация на GitHub
-
-Перейдите на сайт github.com и зарегистрируйте учетную запись нажав на кнопку [Sign up]{.figtext} в верхнем правом углу или войдите в существующую учетную запись нажав [Sign in]{.figtext}.
+Для работы с GitHub нужна учётная запись. Откройте github.com.
+Если учётной записи нет, нажмите [Sign up]{.figtext} в правом верхнем углу и зарегистрируйтесь. Если она уже есть, нажмите [Sign in]{.figtext} и войдите.
E-mail при регистрации не обязательно должен совпадать с указанным при настройке Git в [Главе 1](#setup). Дополнительные e-mail адреса можно добавить после регистрации [на странице настроек](https://github.com/settings/emails).
Это рекоммендуется сделать, чтобы GitHub мог ассоциировать сделанные на компьютере коммиты с вашей учетной записью онлайн.
-## Создание токена
-
-В целях безопасности, GitHub не позволяет использовать пароль от веб-сайта при работе с Git,
-а требует создать так называемый **Personal Access Token** --- отдельный пароль специально для Git на вашем компьютере.
-[Во всех случаях, когда Git запрашивает пароль от GitHub, необходимо вводить токен, а не пароль от веб-сайта.]{}
-
-Для этого перейдите по ссылке github.com/settings/tokens,
-авторизуйтесь и нажмите **Generate new token**, в выпадающем списке выберите **classic**.
-На новой странице введите название токена, например Work.
-Отметьте следующие права `repo`, `workflow`, `user`
-и нажмите зеленую кнопку **Generate token** в конце страницы.
-
-{width=100%}
-{width=100%}
-
-Не забудьте скопировать и сохранить ваш токен - он выглядит как строка вида `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`.
-После того как вы закроете страницу посмотреть созданный токен невозможно.
-Храните его в надежном месте как пароль.
-
-{width=100%}
-
Теперь мы готовы опубликовать наш репозиторий на GitHub.
diff --git a/04-02-remote.Rmd b/04-02-remote.Rmd
index bb49e2b..cc231e5 100644
--- a/04-02-remote.Rmd
+++ b/04-02-remote.Rmd
@@ -1,4 +1,4 @@
-# Удаленный репозиторий {#git-remote}
+# Удалённый репозиторий {#git-remote}
```{r, include=FALSE}
# Рассказать про видимость репозиториев
@@ -9,40 +9,51 @@
{width=400px}
-В открывшейся форме достаточно заполнить только название репозитория в поле **Repository name**, например `penguins`.
+В открывшейся форме достаточно заполнить только название репозитория в поле **Repository name**, например `r-course`.
Остальные поля оставьте по умолчанию, мы только разберем за что они отвечают.
-- Description --- краткое описание
-- Public / Private --- настройка доступа
+- **Description** --- краткое описание
+- **Choose visibility** --- настройка доступа
- Public --- кто угодно сможет просматривать ваши файлы, но только отдельно добавленные пользователи смогут их изменять
- Private --- только отдельно добавленные пользователи смогут просматривать и изменять файлы
-- Initialize this repository with --- этот раздел позволяет добавить в создаваемый репозиторий несколько типовых файлов `README` `.gitignore` и `LICENSE`; не отмечайте ни один из них, потому что в нашем репозитории на компьютере уже есть файлы и они будут конфликтовать с этими.
+- **Add README**, **.gitignore**, **license** добавляет в создаваемый репозиторий шаблоны этих файлов; не отмечайте ни один, потому что в нашем репозитории на компьютере уже есть файлы и они будут конфликтовать с этими.
Внизу страницы нажмите [Create repository]{.figtext}.
Пример заполненной формы
-{width=600px}
+{width=600px}
-*Удалить это? Там и так на форме все написано, только что на англ. Оставить только предупреждение, чтобы не жали Initialize this repository with.*
+```{r, include=FALSE}
+# Удалить это? Там и так на форме все написано, только что на англ. Оставить только предупреждение, чтобы не жали Initialize this repository with.
+
+# Со скрином формы репозитория тоже ту мач?
+```
+
+Для созданного репозитория GitHub сгенерировал набор команд для быстрой настройки, воспользуемся ими.
+Сначала необходимо убедиться, что напротив адреса репозитория выбрана опция доступа через [HTTPS]{.figtext} [(1)]{.figref}.
-*Со скрином формы репозитория тоже ту мач?*
+{width=100%}
-Для созданного репозитория GitHub сгенерировал набор команд быстрой настройки, воспользуемся ими.
-Сначала необходимо убедиться, что напротив адреса репозитория выбрана опция доступа через [HTTPS]{.figtext} [(A)]{.figref}.
-Далее скопируйте все три команды из раздела для существующего репозитория (**... or push an existing repository from the command line**, [B]{.figref}) и выполните в терминале ^[В меню RStudio выберите Tools → Terminal → New Terminal].
-На запрос пароля скопируйте и вставьте сгенерированный в предыдущей главе токен.
+Далее скопируйте все три команды из раздела для существующего репозитория (**... or push an existing repository from the command line**, [2]{.figref}) и выполните их в терминале. Если закрыли терминал или он занят Quarto, [создайте новый терминал](#terminal).
-{width=100%}
+Positron предложит войти в GitHub. Выберите [Allow]{.figtext},
+запомните код появившийся в новом окне, затем нажмите [Copy & Continue to Browser]{.figtext}.
+
+{width=100%}
+
+В открывшемся окне браузера разрешите доступ, введите код и завершите вход.
+Вернитесь в Positron.
```{r, include=FALSE}
-# В чем разница между HTTPS и SSH?
+# В чём разница между HTTPS и SSH?
#
```
-Мы связали наш локальный репозиторий с удаленным при помощи команды **remote add** --- это необходимо было сделать один раз.
-И выполнили команду **push** --- отправить сделанные фиксации в удаленный репозиторий, это необходимо делать регулярно и для этого в интерфейсе RStudio есть кнопка на панели [Git]{.figtext}.
+Мы связали наш локальный репозиторий с удаленным при помощи команды `git remote add` --- это необходимо было сделать один раз.
+И выполнили команду `git push` --- отправить локальные коммиты в удаленный репозиторий, это необходимо делать регулярно и для этого Positron есть интерфейс.
+
Если команды выполнились успешно, файлы были загружены на GitHub.
Обновите страницу репозитория и проверьте содержимое файлов.
-{width=100%}
+{width=100%}
diff --git a/04-03-push-pull.Rmd b/04-03-push-pull.Rmd
index 1e4b7f4..8ed19a6 100644
--- a/04-03-push-pull.Rmd
+++ b/04-03-push-pull.Rmd
@@ -7,65 +7,63 @@
# Это не последовательно и запутает, оставить для практики.
```
-На предыдущем шаге мы загрузили изменения из нашего локального репозитория в удаленный репозиторий на GitHub при помощи команды `push` в терминале.
+На предыдущем шаге мы загрузили изменения из локального репозитория в удалённый репозиторий на GitHub при помощи команды `git push` в терминале.
+Git не синхронизирует изменения автоматически, это необходимо делать вручную.
-Git не синхронизирует изменения автоматически, это необходимо делать вручную, используя команду push ил кнопку [Push]{.figtext} в интерфейсе RStudio на панели [Git]{.figtext}.
+Создадим и загрузим ещё один коммит. Добавьте в `paper.qmd` перед чанком с графиком короткое пояснение, например:
-Создадим и загрузим еще один коммит. Например, добавим небольшой комментарий к коду, чтобы человеку открывшему его впервые было легче разобраться.
-
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
-
-# Ящик с усами для длины клюва
-
-png("penguins-boxplot.png")
-boxplot(x, ylab = "Bill length, mm")
-dev.off()
+```
+Ящик с усами для длины клюва.
```
-Сохраните и закомитьте файл `penguins.R`.
-После чего нажмите кнопку [Push]{.figtext} в верхнем правом углу.
+Сохраните и закомитьте файл `paper.qmd`.
+После чего нажмите кнопку [Sync Changes]{.figtext} на панели [Source Control]{.figtext}.
-{width=100%}
+{width=100%}
Перейдите на страницу репозитория на GitHub и убедитесь, что коммит был загружен.
-Это можно понять по тексту сообщения над списком файлов и по тексту и времени изменения напротив файла `penguins.R`.
+Это можно понять по тексту сообщения над списком файлов и по тексту и времени изменения напротив файла `paper.qmd`.
-{width=100%}
+{width=100%}
GitHub позволяет вносить изменения в репозиторий из веб-интерфейса.
Эта функция используется редко, потому что код необходимо запускать и проверять на компьютере, но она полезна для небольших правок или загрузки файлов.
Создадим при помощи нее новый файл.
-Файл README --- это файл, который отображается на главной странице репозитория для краткого описания проекта. Обычно он включает описание данных и скриптов, как начать работу с проектом и тому подобное.
+Файл README --- это файл, который отображается на главной странице репозитория для краткого описания проекта. Обычно он включает описание данных и кода, как начать работу с проектом и тому подобное.
-Нажмите кнопку [Add a README]{.figtext}. В открывшемся файле введите текст в формате Markdown^[это как RMarkdown, только без возможности выполнения кода на R] (используйте или измените текст ниже)
+Нажмите кнопку [Add a README]{.figtext}. В открывшемся файле введите текст в формате Markdown^[в документе Quarto используется тот же синтаксис разметки, но README не выполняет код на R] (используйте или измените текст ниже)
и нажмите кнопку [Commit changes]{.figtext} в верхнем правом углу.
Откроется окно создания коммита, оставьте текст по умолчанию и подтвердите создание коммита нажатием кнопки [Commit changes]{.figtext}
-{width=100%}
+{width=100%}
```md
-# Пингвины «Палмер» 🐧
+# Учебный проект
-Этот репозиторий был создан в рамках курса от [Института биоинформатики](bioinf.me/education/stat),
-чтобы познакомиться с основами Git — фиксацией изменений, ветвлением и работой с GitHub.
+Этот репозиторий был создан в рамках курса [«Основы Git»](https://yoursdearboy.github.io/git-101/),
+чтобы познакомиться с фиксацией изменений, ветвлением и работой с GitHub.
-В качестве примера использованы данные о длине клюва пингвинов,
+В качестве примера использованы данные о длине клюва 🐧 пингвинов,
собранные доктором Кристен Горман на станции «Палмер» в Антарктиде.
-Содержимое репозитория:
+Файлы проекта:
-- penguins-boxplot.png — диаграмма ящик с усами, показывающая распределение длины клюва
-- penguins.R — скрипт для построения диаграммы
-- penguins.csv — данные
+- `paper.html` — готовый отчёт
+- `paper.qmd` — документ Quarto с кодом
+- `data/penguins.csv` — данные
```
-Чтобы загрузить изменения из удаленного репозитория на компьютер используется команда **pull**.
+Загрузить изменения из удалённого репозитория можно двумя способами: выполнить команду `git pull` в терминале или нажать кнопку [Pull]{.figtext} справа от заголовка [Graph]{.figtext} на панели [Source Control]{.figtext} в Positron.
+
+::: {style="float: left; clear: both; width: 200px; margin-right: 20px;"}
+{width=100%}
+:::
+
+Загрузите изменения любым из этих способов.
+Если загрузка прошла успешно, в журнале появится коммит созданный через GitHub, а в списке файлов `README.md`.
-Вернитесь в RStudio и на панели [Git]{.figtext} нажмите кнопку [Pull]{.figtext}.
-Если команда выполнилась успешно, в списке файлов появится файл `README.md`,
-а в журнале --- коммит созданный через GitHub.
+::: {.clearfix}
+:::
Как и в случае с переключением веток, Git откажется загружать изменения и выдаст ошибку, если в рабочей папке имеются незафиксированные изменения, которые конфликтуют с загружаемыми.
diff --git a/04-04-pull-request.Rmd b/04-04-pull-request.Rmd
index 71ab9a6..00db24a 100644
--- a/04-04-pull-request.Rmd
+++ b/04-04-pull-request.Rmd
@@ -4,51 +4,49 @@ Pull Request --- это механизм GitHub для слияния веток
Орнитолог проходящий мимо нашего репозитория обратит внимание, что длину клюва пингвина лучше рассматривать в зависимости от пола. Он даже может предложить необходимые изменения при помощи Pull Request.
-Создайте ветку с названием `adjust-by-sex` при помощи кнопки [New branch]{.figtext} на панели [Git]{.figtext} в RStudio. Убедитесь, что справа от кнопки вместо названия ветки по умолчанию `main` выводится название созданной ветки `adjust-by-sex`.
+Создайте ветку с названием `adjust-by-sex`, как показано в [разделе «Создание ветки»](#git-branch): нажмите `main`в строке состояния Positron и выберите [Create new branch…]{.figtext} Убедитесь, что вместо `main` выводится название созданной ветки `adjust-by-sex`.
-{width=200}
+Замените код в чанке на приведённый ниже. Чтобы посмотреть, что изменилось, выберите файл `paper.qmd` на панели [Source Control]{.figtext}.
-Отредактируйте скрипт `penguins.R`, добавив пол в код для построения ящика с усами. Код приведен ниже, не забывайте, что вы можете сравнить изменения по сравнению с оригиналом при помощи кнопки [Diff]{.figtext} на панели [Git]{.figtext}.
+```{r, eval=FALSE}
+data <- read.csv("data/penguins.csv")
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+x <- data$bill_len
g <- data$sex
-png("penguins-boxplot.png")
boxplot(x ~ g, xlab = "Sex", ylab = "Bill length, mm")
-dev.off()
```
-Сохраните и выполните скрипт `penguins.R`.
-Создайте коммит включив в него скрипт и обновленную диаграмму `penguins-boxplot.png`.
+Сохраните файл и нажмите [Preview]{.figtext}, чтобы обновить отчёт.
+Создайте коммит, включив в него `paper.qmd` и `paper.html`.
+После создания коммита выберите [Publish Branch]{.figtext} на панели [Source Control]{.figtext}.
-{width=100%}
+{width=100%}
-После создания коммита нажмите кнопку [Push]{.figtext} в верхнем правом углу или на панели [Git]{.figtext}. Так как у вас полные права на редактирование репозитория, то новая ветка будет загружена на GitHub. Прохожему орнитологу пришлось бы создать свою копию репозитория или просить дать доступ средствами GitHub.
+Так как у вас полные права на редактирование репозитория, то новая ветка будет загружена на GitHub.
+Прохожему орнитологу пришлось бы создать свою копию репозитория или просить дать доступ средствами GitHub.
-Перейдите на страницу репозитория в GitHub и убедитесь, что ветка была загружена и содержит сделанные измнения, для этого выберите ее в выпадающем меню появляющемся при нажатии кнопки с названием ветки [main]{.figtext}.
+Перейдите на страницу репозитория в GitHub и убедитесь, что ветка содержит сделанные измнения, для этого выберите ее в выпадающем меню появляющемся при нажатии кнопки с названием ветки [main]{.figtext}.
-{width=100%}
+{width=100%}
При просмотре ветки отличной от основной, GitHub предложит создать из нее **Pull Request** --- предложение автору репозитория слить изменения из этой ветки. Нажмите кнопку [Contribute]{.figtext} и в выпадающем меню выберите [Open pull request]{.figtext}.
-{width=100%}
+{width=100%}
GitHub предложит ввести заголовок и описание предлагаемых изменений, правило хорошего тона кратко описать причину изменений и суть предлагаемого решения. А также, прокрутите страницу создания Pull Request и проверьте изменения, которые вы предлагаете, после чего нажмите кнопку [Create pull Request]{.figtext} под полем с описанием.
-{width=100%}
+{width=100%}
На странице Pull Request владельцу репозитория доступна опция слить предложенные изменения.
Нажмите кнопку [Merge pull request]{.figtext} внизу страницы.
-В открывшемся окне GitHub предложить ввести текст коммита, как если бы мы делали слияние ветки в терминале. Оставьте или измените текст и нажмите кнопку [Confirm merge]{.figtext}
+В открывшемся окне GitHub предложить ввести текст коммита, как если бы мы делали слияние ветки в Positron. Оставьте или измените текст и нажмите кнопку [Confirm merge]{.figtext}
После успешного слияния ветку можно удалить.
{width=100%}
{width=100%}
{width=100%}
-Вернемся к нашему проекту в RStudio.
-Слияние было выполнено онлайн на GitHub, а значит необходимо загрузить изменения в наш локальный репозиторий, т.е. сделать pull.
-Переключитесь на ветку `main` при помощи панели [Git]{.figtext} и нажмите кнопку [Pull]{.figtext}.
-Убедитесь, что теперь ветка `main` содержит актуальные изменения в файлах `penguins.R` и `penguins-boxplot.png`.
+Вернёмся к проекту в Positron. Мы выполнили слияние на GitHub, поэтому локальный репозиторий ещё не содержит новых изменений.
+Переключитесь на `main` при помощи строки состояния и загрузите изменения, как в [предыдущей главе](#git-push-pull), нажав [Pull]{.figtext}.
+Убедитесь, что файлы `paper.qmd` и `paper.html` обновились.
diff --git a/04-05-clone.Rmd b/04-05-clone.Rmd
index f22c4ab..f023465 100644
--- a/04-05-clone.Rmd
+++ b/04-05-clone.Rmd
@@ -10,25 +10,14 @@
Нажмите кнопку [Code]{.figtext} на странице репозитория,
убедитесь что выбрана опция **HTTPS** и скопируйте адрес.
-{width="600px"}
+![Меню Code на GitHub: выбрана вкладка HTTPS и показан адрес репозитория. Откройте опубликованный репозиторий и нажмите Code]()
-Создадим проект RStudio.
-В верхнем меню выберите [File → New Project]{.figtext}.
-В появившемся окне выберите [Version Control]{.figtext} и далее [Git]{.figtext}.
-В поле [Repository URL]{.figtext} вставьте адрес репозитория.
-В поле [Project directory name]{.figtext} укажите название папки для проекта ---
-т.к. папка `penguins` уже существует, используем название `penguins2`.
-Откроется окно проекта, RStudio готова к работе.
+Создадим копию проекта в Positron.
+Откройте новое окно без проекта и в палитре команд выберите [Workspaces: New Folder from Git…]{.figtext}.
+Выберите [Clone from GitHub]{.figtext} и свой репозиторий `r-course` или вставьте скопированный адрес.
+Укажите другую родительскую папку, чтобы новая копия не оказалась внутри уже открытого проекта.
+После загрузки нажмите [Open]{.figtext}.
-
Данные собраны на трёх островах архипелага Палмера. Возьмём пингвинов с острова Dream.
+
+
penguins <-read.csv("data/penguins.csv")
+dream <-subset(penguins, island =="Dream")
+nrow(dream)
+
+
[1] 124
+
+
+
Самый длинный плавник:
+
+
gigapeng <-max(dream$flipper_len)
+gigapeng
+
+
[1] 212
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/course-project/starter/report.qmd b/course-project/starter/report.qmd
new file mode 100644
index 0000000..e3063b1
--- /dev/null
+++ b/course-project/starter/report.qmd
@@ -0,0 +1,23 @@
+---
+title: "Пингвины с острова Dream"
+format:
+ html:
+ embed-resources: true
+---
+
+Данные собраны на трёх островах архипелага Палмера.
+Возьмём пингвинов с острова Dream.
+
+```{r}
+penguins <- read.csv("data/penguins.csv")
+dream <- subset(penguins, island == "Dream")
+nrow(dream)
+```
+
+Самый длинный плавник:
+
+```{r}
+gigapeng <- max(dream$flipper_len)
+gigapeng
+```
+
diff --git a/course-project/starter/tables.qmd b/course-project/starter/tables.qmd
new file mode 100644
index 0000000..723ff22
--- /dev/null
+++ b/course-project/starter/tables.qmd
@@ -0,0 +1,35 @@
+---
+title: "Статистическая таблица"
+format: html
+---
+
+```{r}
+library(tidyverse)
+library(flextable)
+```
+
+```{r}
+data <- read_tsv("data/data_tsv.tsv", show_col_types = FALSE)
+data$Группа <- factor(data$Группа)
+
+statistics <- list(
+ `Количество субъектов` = ~ length(.x),
+ `Ср. знач.` = ~ mean(.x, na.rm = TRUE),
+ `Станд. отклон.` = ~ sd(.x, na.rm = TRUE),
+ `Медиана` = ~ median(.x, na.rm = TRUE)
+)
+
+table <- data |>
+ select(`Группа`, where(is.numeric)) |>
+ group_by(`Группа`) |>
+ summarise(across(where(is.numeric), statistics, .names = "{.col}__{.fn}")) |>
+ mutate(across(-`Группа`, function(x) round(x, 2))) |>
+ pivot_longer(!`Группа`) |>
+ separate(name, into = c("Переменная", "Статистика"), sep = "__")
+
+table |>
+ flextable() |>
+ theme_box() |>
+ merge_v(c("Группа", "Переменная"))
+```
+
diff --git a/course-project/updates/penguins.csv b/course-project/updates/penguins.csv
new file mode 100644
index 0000000..a8af5f4
--- /dev/null
+++ b/course-project/updates/penguins.csv
@@ -0,0 +1,345 @@
+"species","island","bill_len","bill_dep","flipper_len","body_mass","sex","year"
+"Adelie","Torgersen",39.1,18.7,181,3750,"male",2007
+"Adelie","Torgersen",39.5,17.4,186,3800,"female",2007
+"Adelie","Torgersen",40.3,18,195,3250,"female",2007
+"Adelie","Torgersen",39,,,,,2007
+"Adelie","Torgersen",36.7,19.3,193,3450,"female",2007
+"Adelie","Torgersen",39.3,20.6,190,3650,"male",2007
+"Adelie","Torgersen",38.9,17.8,181,3625,"female",2007
+"Adelie","Torgersen",39.2,19.6,195,4675,"male",2007
+"Adelie","Torgersen",34.1,18.1,193,3475,,2007
+"Adelie","Torgersen",42,20.2,190,4250,,2007
+"Adelie","Torgersen",37.8,17.1,186,3300,,2007
+"Adelie","Torgersen",37.8,17.3,180,3700,,2007
+"Adelie","Torgersen",41.1,17.6,182,3200,"female",2007
+"Adelie","Torgersen",38.6,21.2,191,3800,"male",2007
+"Adelie","Torgersen",34.6,21.1,198,4400,"male",2007
+"Adelie","Torgersen",36.6,17.8,185,3700,"female",2007
+"Adelie","Torgersen",38.7,19,195,3450,"female",2007
+"Adelie","Torgersen",42.5,20.7,197,4500,"male",2007
+"Adelie","Torgersen",34.4,18.4,184,3325,"female",2007
+"Adelie","Torgersen",46,21.5,194,4200,"male",2007
+"Adelie","Biscoe",37.8,18.3,174,3400,"female",2007
+"Adelie","Biscoe",37.7,18.7,180,3600,"male",2007
+"Adelie","Biscoe",35.9,19.2,189,3800,"female",2007
+"Adelie","Biscoe",38.2,18.1,185,3950,"male",2007
+"Adelie","Biscoe",38.8,17.2,180,3800,"male",2007
+"Adelie","Biscoe",35.3,18.9,187,3800,"female",2007
+"Adelie","Biscoe",40.6,18.6,183,3550,"male",2007
+"Adelie","Biscoe",40.5,17.9,187,3200,"female",2007
+"Adelie","Biscoe",37.9,18.6,172,3150,"female",2007
+"Adelie","Biscoe",40.5,18.9,180,3950,"male",2007
+"Adelie","Dream",39.5,16.7,178,3250,"female",2007
+"Adelie","Dream",37.2,18.1,178,3900,"male",2007
+"Adelie","Dream",39.5,17.8,188,3300,"female",2007
+"Adelie","Dream",40.9,18.9,184,3900,"male",2007
+"Adelie","Dream",36.4,17,195,3325,"female",2007
+"Adelie","Dream",39.2,21.1,196,4150,"male",2007
+"Adelie","Dream",38.8,20,190,3950,"male",2007
+"Adelie","Dream",42.2,18.5,180,3550,"female",2007
+"Adelie","Dream",37.6,19.3,181,3300,"female",2007
+"Adelie","Dream",39.8,19.1,184,4650,"male",2007
+"Adelie","Dream",36.5,18,182,3150,"female",2007
+"Adelie","Dream",40.8,18.4,195,3900,"male",2007
+"Adelie","Dream",36,18.5,186,3100,"female",2007
+"Adelie","Dream",44.1,19.7,196,4400,"male",2007
+"Adelie","Dream",37,16.9,185,3000,"female",2007
+"Adelie","Dream",39.6,18.8,190,4600,"male",2007
+"Adelie","Dream",41.1,19,182,3425,"male",2007
+"Adelie","Dream",37.5,18.9,179,2975,,2007
+"Adelie","Dream",36,17.9,190,3450,"female",2007
+"Adelie","Dream",42.3,21.2,191,4150,"male",2007
+"Adelie","Biscoe",39.6,17.7,186,3500,"female",2008
+"Adelie","Biscoe",40.1,18.9,188,4300,"male",2008
+"Adelie","Biscoe",35,17.9,190,3450,"female",2008
+"Adelie","Biscoe",42,19.5,200,4050,"male",2008
+"Adelie","Biscoe",34.5,18.1,187,2900,"female",2008
+"Adelie","Biscoe",41.4,18.6,191,3700,"male",2008
+"Adelie","Biscoe",39,17.5,186,3550,"female",2008
+"Adelie","Biscoe",40.6,18.8,193,3800,"male",2008
+"Adelie","Biscoe",36.5,16.6,181,2850,"female",2008
+"Adelie","Biscoe",37.6,19.1,194,3750,"male",2008
+"Adelie","Biscoe",35.7,16.9,185,3150,"female",2008
+"Adelie","Biscoe",41.3,21.1,195,4400,"male",2008
+"Adelie","Biscoe",37.6,17,185,3600,"female",2008
+"Adelie","Biscoe",41.1,18.2,192,4050,"male",2008
+"Adelie","Biscoe",36.4,17.1,184,2850,"female",2008
+"Adelie","Biscoe",41.6,18,192,3950,"male",2008
+"Adelie","Biscoe",35.5,16.2,195,3350,"female",2008
+"Adelie","Biscoe",41.1,19.1,188,4100,"male",2008
+"Adelie","Torgersen",35.9,16.6,190,3050,"female",2008
+"Adelie","Torgersen",41.8,19.4,198,4450,"male",2008
+"Adelie","Torgersen",33.5,19,190,3600,"female",2008
+"Adelie","Torgersen",39.7,18.4,190,3900,"male",2008
+"Adelie","Torgersen",39.6,17.2,196,3550,"female",2008
+"Adelie","Torgersen",45.8,18.9,197,4150,"male",2008
+"Adelie","Torgersen",35.5,17.5,190,3700,"female",2008
+"Adelie","Torgersen",42.8,18.5,195,4250,"male",2008
+"Adelie","Torgersen",40.9,16.8,191,3700,"female",2008
+"Adelie","Torgersen",37.2,19.4,184,3900,"male",2008
+"Adelie","Torgersen",36.2,16.1,187,3550,"female",2008
+"Adelie","Torgersen",42.1,19.1,195,4000,"male",2008
+"Adelie","Torgersen",34.6,17.2,189,3200,"female",2008
+"Adelie","Torgersen",42.9,17.6,196,4700,"male",2008
+"Adelie","Torgersen",36.7,18.8,187,3800,"female",2008
+"Adelie","Torgersen",35.1,19.4,193,4200,"male",2008
+"Adelie","Dream",37.3,17.8,191,3350,"female",2008
+"Adelie","Dream",41.3,20.3,194,3550,"male",2008
+"Adelie","Dream",36.3,19.5,190,3800,"male",2008
+"Adelie","Dream",36.9,18.6,189,3500,"female",2008
+"Adelie","Dream",38.3,19.2,189,3950,"male",2008
+"Adelie","Dream",38.9,18.8,190,3600,"female",2008
+"Adelie","Dream",35.7,18,202,3550,"female",2008
+"Adelie","Dream",41.1,18.1,205,4300,"male",2008
+"Adelie","Dream",34,17.1,185,3400,"female",2008
+"Adelie","Dream",39.6,18.1,186,4450,"male",2008
+"Adelie","Dream",36.2,17.3,187,3300,"female",2008
+"Adelie","Dream",40.8,18.9,208,4300,"male",2008
+"Adelie","Dream",38.1,18.6,190,3700,"female",2008
+"Adelie","Dream",40.3,18.5,196,4350,"male",2008
+"Adelie","Dream",33.1,16.1,178,2900,"female",2008
+"Adelie","Dream",43.2,18.5,192,4100,"male",2008
+"Adelie","Biscoe",35,17.9,192,3725,"female",2009
+"Adelie","Biscoe",41,20,203,4725,"male",2009
+"Adelie","Biscoe",37.7,16,183,3075,"female",2009
+"Adelie","Biscoe",37.8,20,190,4250,"male",2009
+"Adelie","Biscoe",37.9,18.6,193,2925,"female",2009
+"Adelie","Biscoe",39.7,18.9,184,3550,"male",2009
+"Adelie","Biscoe",38.6,17.2,199,3750,"female",2009
+"Adelie","Biscoe",38.2,20,190,3900,"male",2009
+"Adelie","Biscoe",38.1,17,181,3175,"female",2009
+"Adelie","Biscoe",43.2,19,197,4775,"male",2009
+"Adelie","Biscoe",38.1,16.5,198,3825,"female",2009
+"Adelie","Biscoe",45.6,20.3,191,4600,"male",2009
+"Adelie","Biscoe",39.7,17.7,193,3200,"female",2009
+"Adelie","Biscoe",42.2,19.5,197,4275,"male",2009
+"Adelie","Biscoe",39.6,20.7,191,3900,"female",2009
+"Adelie","Biscoe",42.7,18.3,196,4075,"male",2009
+"Adelie","Torgersen",38.6,17,188,2900,"female",2009
+"Adelie","Torgersen",37.3,20.5,199,3775,"male",2009
+"Adelie","Torgersen",35.7,17,189,3350,"female",2009
+"Adelie","Torgersen",41.1,18.6,189,3325,"male",2009
+"Adelie","Torgersen",36.2,17.2,187,3150,"female",2009
+"Adelie","Torgersen",37.7,19.8,198,3500,"male",2009
+"Adelie","Torgersen",40.2,17,176,3450,"female",2009
+"Adelie","Torgersen",41.4,18.5,202,3875,"male",2009
+"Adelie","Torgersen",35.2,15.9,186,3050,"female",2009
+"Adelie","Torgersen",40.6,19,199,4000,"male",2009
+"Adelie","Torgersen",38.8,17.6,191,3275,"female",2009
+"Adelie","Torgersen",41.5,18.3,195,4300,"male",2009
+"Adelie","Torgersen",39,17.1,191,3050,"female",2009
+"Adelie","Torgersen",44.1,18,210,4000,"male",2009
+"Adelie","Torgersen",38.5,17.9,190,3325,"female",2009
+"Adelie","Torgersen",43.1,19.2,197,3500,"male",2009
+"Adelie","Dream",36.8,18.5,193,3500,"female",2009
+"Adelie","Dream",37.5,18.5,199,4475,"male",2009
+"Adelie","Dream",38.1,17.6,187,3425,"female",2009
+"Adelie","Dream",41.1,17.5,190,3900,"male",2009
+"Adelie","Dream",35.6,17.5,191,3175,"female",2009
+"Adelie","Dream",40.2,20.1,200,3975,"male",2009
+"Adelie","Dream",37,16.5,185,3400,"female",2009
+"Adelie","Dream",39.7,17.9,193,4250,"male",2009
+"Adelie","Dream",40.2,17.1,193,3400,"female",2009
+"Adelie","Dream",40.6,17.2,187,3475,"male",2009
+"Adelie","Dream",32.1,15.5,188,3050,"female",2009
+"Adelie","Dream",40.7,17,190,3725,"male",2009
+"Adelie","Dream",37.3,16.8,192,3000,"female",2009
+"Adelie","Dream",39,18.7,185,3650,"male",2009
+"Adelie","Dream",39.2,18.6,190,4250,"male",2009
+"Adelie","Dream",36.6,18.4,184,3475,"female",2009
+"Adelie","Dream",36,17.8,195,3450,"female",2009
+"Adelie","Dream",37.8,18.1,193,3750,"male",2009
+"Adelie","Dream",36,17.1,187,3700,"female",2009
+"Adelie","Dream",41.5,18.5,201,4000,"male",2009
+"Gentoo","Biscoe",46.1,13.2,211,4500,"female",2007
+"Gentoo","Biscoe",50,16.3,230,5700,"male",2007
+"Gentoo","Biscoe",48.7,14.1,210,4450,"female",2007
+"Gentoo","Biscoe",50,15.2,218,5700,"male",2007
+"Gentoo","Biscoe",47.6,14.5,215,5400,"male",2007
+"Gentoo","Biscoe",46.5,13.5,210,4550,"female",2007
+"Gentoo","Biscoe",45.4,14.6,211,4800,"female",2007
+"Gentoo","Biscoe",46.7,15.3,219,5200,"male",2007
+"Gentoo","Biscoe",43.3,13.4,209,4400,"female",2007
+"Gentoo","Biscoe",46.8,15.4,215,5150,"male",2007
+"Gentoo","Biscoe",40.9,13.7,214,4650,"female",2007
+"Gentoo","Biscoe",49,16.1,216,5550,"male",2007
+"Gentoo","Biscoe",45.5,13.7,214,4650,"female",2007
+"Gentoo","Biscoe",48.4,14.6,213,5850,"male",2007
+"Gentoo","Biscoe",45.8,14.6,210,4200,"female",2007
+"Gentoo","Biscoe",49.3,15.7,217,5850,"male",2007
+"Gentoo","Biscoe",42,13.5,210,4150,"female",2007
+"Gentoo","Biscoe",49.2,15.2,221,6300,"male",2007
+"Gentoo","Biscoe",46.2,14.5,209,4800,"female",2007
+"Gentoo","Biscoe",48.7,15.1,222,5350,"male",2007
+"Gentoo","Biscoe",50.2,14.3,218,5700,"male",2007
+"Gentoo","Biscoe",45.1,14.5,215,5000,"female",2007
+"Gentoo","Biscoe",46.5,14.5,213,4400,"female",2007
+"Gentoo","Biscoe",46.3,15.8,215,5050,"male",2007
+"Gentoo","Biscoe",42.9,13.1,215,5000,"female",2007
+"Gentoo","Biscoe",46.1,15.1,215,5100,"male",2007
+"Gentoo","Biscoe",44.5,14.3,216,4100,,2007
+"Gentoo","Biscoe",47.8,15,215,5650,"male",2007
+"Gentoo","Biscoe",48.2,14.3,210,4600,"female",2007
+"Gentoo","Biscoe",50,15.3,220,5550,"male",2007
+"Gentoo","Biscoe",47.3,15.3,222,5250,"male",2007
+"Gentoo","Biscoe",42.8,14.2,209,4700,"female",2007
+"Gentoo","Biscoe",45.1,14.5,207,5050,"female",2007
+"Gentoo","Biscoe",59.6,17,230,6050,"male",2007
+"Gentoo","Biscoe",49.1,14.8,220,5150,"female",2008
+"Gentoo","Biscoe",48.4,16.3,220,5400,"male",2008
+"Gentoo","Biscoe",42.6,13.7,213,4950,"female",2008
+"Gentoo","Biscoe",44.4,17.3,219,5250,"male",2008
+"Gentoo","Biscoe",44,13.6,208,4350,"female",2008
+"Gentoo","Biscoe",48.7,15.7,208,5350,"male",2008
+"Gentoo","Biscoe",42.7,13.7,208,3950,"female",2008
+"Gentoo","Biscoe",49.6,16,225,5700,"male",2008
+"Gentoo","Biscoe",45.3,13.7,210,4300,"female",2008
+"Gentoo","Biscoe",49.6,15,216,4750,"male",2008
+"Gentoo","Biscoe",50.5,15.9,222,5550,"male",2008
+"Gentoo","Biscoe",43.6,13.9,217,4900,"female",2008
+"Gentoo","Biscoe",45.5,13.9,210,4200,"female",2008
+"Gentoo","Biscoe",50.5,15.9,225,5400,"male",2008
+"Gentoo","Biscoe",44.9,13.3,213,5100,"female",2008
+"Gentoo","Biscoe",45.2,15.8,215,5300,"male",2008
+"Gentoo","Biscoe",46.6,14.2,210,4850,"female",2008
+"Gentoo","Biscoe",48.5,14.1,220,5300,"male",2008
+"Gentoo","Biscoe",45.1,14.4,210,4400,"female",2008
+"Gentoo","Biscoe",50.1,15,225,5000,"male",2008
+"Gentoo","Biscoe",46.5,14.4,217,4900,"female",2008
+"Gentoo","Biscoe",45,15.4,220,5050,"male",2008
+"Gentoo","Biscoe",43.8,13.9,208,4300,"female",2008
+"Gentoo","Biscoe",45.5,15,220,5000,"male",2008
+"Gentoo","Biscoe",43.2,14.5,208,4450,"female",2008
+"Gentoo","Biscoe",50.4,15.3,224,5550,"male",2008
+"Gentoo","Biscoe",45.3,13.8,208,4200,"female",2008
+"Gentoo","Biscoe",46.2,14.9,221,5300,"male",2008
+"Gentoo","Biscoe",45.7,13.9,214,4400,"female",2008
+"Gentoo","Biscoe",54.3,15.7,231,5650,"male",2008
+"Gentoo","Biscoe",45.8,14.2,219,4700,"female",2008
+"Gentoo","Biscoe",49.8,16.8,230,5700,"male",2008
+"Gentoo","Biscoe",46.2,14.4,214,4650,,2008
+"Gentoo","Biscoe",49.5,16.2,229,5800,"male",2008
+"Gentoo","Biscoe",43.5,14.2,220,4700,"female",2008
+"Gentoo","Biscoe",50.7,15,223,5550,"male",2008
+"Gentoo","Biscoe",47.7,15,216,4750,"female",2008
+"Gentoo","Biscoe",46.4,15.6,221,5000,"male",2008
+"Gentoo","Biscoe",48.2,15.6,221,5100,"male",2008
+"Gentoo","Biscoe",46.5,14.8,217,5200,"female",2008
+"Gentoo","Biscoe",46.4,15,216,4700,"female",2008
+"Gentoo","Biscoe",48.6,16,230,5800,"male",2008
+"Gentoo","Biscoe",47.5,14.2,209,4600,"female",2008
+"Gentoo","Biscoe",51.1,16.3,220,6000,"male",2008
+"Gentoo","Biscoe",45.2,13.8,215,4750,"female",2008
+"Gentoo","Biscoe",45.2,16.4,223,5950,"male",2008
+"Gentoo","Biscoe",49.1,14.5,212,4625,"female",2009
+"Gentoo","Biscoe",52.5,15.6,221,5450,"male",2009
+"Gentoo","Biscoe",47.4,14.6,212,4725,"female",2009
+"Gentoo","Biscoe",50,15.9,224,5350,"male",2009
+"Gentoo","Biscoe",44.9,13.8,212,4750,"female",2009
+"Gentoo","Biscoe",50.8,17.3,228,5600,"male",2009
+"Gentoo","Biscoe",43.4,14.4,218,4600,"female",2009
+"Gentoo","Biscoe",51.3,14.2,218,5300,"male",2009
+"Gentoo","Biscoe",47.5,14,212,4875,"female",2009
+"Gentoo","Biscoe",52.1,17,230,5550,"male",2009
+"Gentoo","Biscoe",47.5,15,218,4950,"female",2009
+"Gentoo","Biscoe",52.2,17.1,228,5400,"male",2009
+"Gentoo","Biscoe",45.5,14.5,212,4750,"female",2009
+"Gentoo","Biscoe",49.5,16.1,224,5650,"male",2009
+"Gentoo","Biscoe",44.5,14.7,214,4850,"female",2009
+"Gentoo","Biscoe",50.8,15.7,226,5200,"male",2009
+"Gentoo","Biscoe",49.4,15.8,216,4925,"male",2009
+"Gentoo","Biscoe",46.9,14.6,222,4875,"female",2009
+"Gentoo","Biscoe",48.4,14.4,203,4625,"female",2009
+"Gentoo","Biscoe",51.1,16.5,225,5250,"male",2009
+"Gentoo","Biscoe",48.5,15,219,4850,"female",2009
+"Gentoo","Biscoe",55.9,17,228,5600,"male",2009
+"Gentoo","Biscoe",47.2,15.5,215,4975,"female",2009
+"Gentoo","Biscoe",49.1,15,228,5500,"male",2009
+"Gentoo","Biscoe",47.3,13.8,216,4725,,2009
+"Gentoo","Biscoe",46.8,16.1,215,5500,"male",2009
+"Gentoo","Biscoe",41.7,14.7,210,4700,"female",2009
+"Gentoo","Biscoe",53.4,15.8,219,5500,"male",2009
+"Gentoo","Biscoe",43.3,14,208,4575,"female",2009
+"Gentoo","Biscoe",48.1,15.1,209,5500,"male",2009
+"Gentoo","Biscoe",50.5,15.2,216,5000,"female",2009
+"Gentoo","Biscoe",49.8,15.9,229,5950,"male",2009
+"Gentoo","Biscoe",43.5,15.2,213,4650,"female",2009
+"Gentoo","Biscoe",51.5,16.3,230,5500,"male",2009
+"Gentoo","Biscoe",46.2,14.1,217,4375,"female",2009
+"Gentoo","Biscoe",55.1,16,230,5850,"male",2009
+"Gentoo","Biscoe",44.5,15.7,217,4875,,2009
+"Gentoo","Biscoe",48.8,16.2,222,6000,"male",2009
+"Gentoo","Biscoe",47.2,13.7,214,4925,"female",2009
+"Gentoo","Biscoe",47.5,,,,,2009
+"Gentoo","Biscoe",46.8,14.3,215,4850,"female",2009
+"Gentoo","Biscoe",50.4,15.7,222,5750,"male",2009
+"Gentoo","Biscoe",45.2,14.8,212,5200,"female",2009
+"Gentoo","Biscoe",49.9,16.1,213,5400,"male",2009
+"Chinstrap","Dream",46.5,17.9,192,3500,"female",2007
+"Chinstrap","Dream",50,19.5,196,3900,"male",2007
+"Chinstrap","Dream",51.3,19.2,193,3650,"male",2007
+"Chinstrap","Dream",45.4,18.7,188,3525,"female",2007
+"Chinstrap","Dream",52.7,19.8,197,3725,"male",2007
+"Chinstrap","Dream",45.2,17.8,198,3950,"female",2007
+"Chinstrap","Dream",46.1,18.2,178,3250,"female",2007
+"Chinstrap","Dream",51.3,18.2,197,3750,"male",2007
+"Chinstrap","Dream",46,18.9,195,4150,"female",2007
+"Chinstrap","Dream",51.3,19.9,198,3700,"male",2007
+"Chinstrap","Dream",46.6,17.8,193,3800,"female",2007
+"Chinstrap","Dream",51.7,20.3,194,3775,"male",2007
+"Chinstrap","Dream",47,17.3,185,3700,"female",2007
+"Chinstrap","Dream",52,18.1,201,4050,"male",2007
+"Chinstrap","Dream",45.9,17.1,190,3575,"female",2007
+"Chinstrap","Dream",50.5,19.6,201,4050,"male",2007
+"Chinstrap","Dream",50.3,20,197,3300,"male",2007
+"Chinstrap","Dream",58,17.8,181,3700,"female",2007
+"Chinstrap","Dream",46.4,18.6,190,3450,"female",2007
+"Chinstrap","Dream",49.2,18.2,195,4400,"male",2007
+"Chinstrap","Dream",42.4,17.3,181,3600,"female",2007
+"Chinstrap","Dream",48.5,17.5,191,3400,"male",2007
+"Chinstrap","Dream",43.2,16.6,187,2900,"female",2007
+"Chinstrap","Dream",50.6,19.4,193,3800,"male",2007
+"Chinstrap","Dream",46.7,17.9,195,3300,"female",2007
+"Chinstrap","Dream",52,19,197,4150,"male",2007
+"Chinstrap","Dream",50.5,18.4,200,3400,"female",2008
+"Chinstrap","Dream",49.5,19,200,3800,"male",2008
+"Chinstrap","Dream",46.4,17.8,191,3700,"female",2008
+"Chinstrap","Dream",52.8,20,205,4550,"male",2008
+"Chinstrap","Dream",40.9,16.6,187,3200,"female",2008
+"Chinstrap","Dream",54.2,20.8,201,4300,"male",2008
+"Chinstrap","Dream",42.5,16.7,187,3350,"female",2008
+"Chinstrap","Dream",51,18.8,203,4100,"male",2008
+"Chinstrap","Dream",49.7,18.6,195,3600,"male",2008
+"Chinstrap","Dream",47.5,16.8,199,3900,"female",2008
+"Chinstrap","Dream",47.6,18.3,195,3850,"female",2008
+"Chinstrap","Dream",52,20.7,210,4800,"male",2008
+"Chinstrap","Dream",46.9,16.6,192,2700,"female",2008
+"Chinstrap","Dream",53.5,19.9,205,4500,"male",2008
+"Chinstrap","Dream",49,19.5,210,3950,"male",2008
+"Chinstrap","Dream",46.2,17.5,187,3650,"female",2008
+"Chinstrap","Dream",50.9,19.1,196,3550,"male",2008
+"Chinstrap","Dream",45.5,17,196,3500,"female",2008
+"Chinstrap","Dream",50.9,17.9,196,3675,"female",2009
+"Chinstrap","Dream",50.8,18.5,201,4450,"male",2009
+"Chinstrap","Dream",50.1,17.9,190,3400,"female",2009
+"Chinstrap","Dream",49,19.6,212,4300,"male",2009
+"Chinstrap","Dream",51.5,18.7,187,3250,"male",2009
+"Chinstrap","Dream",49.8,17.3,198,3675,"female",2009
+"Chinstrap","Dream",48.1,16.4,199,3325,"female",2009
+"Chinstrap","Dream",51.4,19,201,3950,"male",2009
+"Chinstrap","Dream",45.7,17.3,193,3600,"female",2009
+"Chinstrap","Dream",50.7,19.7,203,4050,"male",2009
+"Chinstrap","Dream",42.5,17.3,187,3350,"female",2009
+"Chinstrap","Dream",52.2,18.8,197,3450,"male",2009
+"Chinstrap","Dream",45.2,16.6,191,3250,"female",2009
+"Chinstrap","Dream",49.3,19.9,203,4050,"male",2009
+"Chinstrap","Dream",50.2,18.8,202,3800,"male",2009
+"Chinstrap","Dream",45.6,19.4,194,3525,"female",2009
+"Chinstrap","Dream",51.9,19.5,206,3950,"male",2009
+"Chinstrap","Dream",46.8,16.5,189,3650,"female",2009
+"Chinstrap","Dream",45.7,17,195,3650,"female",2009
+"Chinstrap","Dream",55.8,19.8,207,4000,"male",2009
+"Chinstrap","Dream",43.5,18.1,202,3400,"female",2009
+"Chinstrap","Dream",49.6,18.2,193,3775,"male",2009
+"Chinstrap","Dream",50.8,19,210,4100,"male",2009
+"Chinstrap","Dream",50.2,18.7,198,3775,"female",2009
diff --git a/docs/01-01-about.md b/docs/01-01-about.md
index 556109d..71bc9f7 100644
--- a/docs/01-01-about.md
+++ b/docs/01-01-about.md
@@ -13,7 +13,7 @@ Git автоматически отслеживает изменения во в
{width=400px style="border: 1px solid #ddd"}
:::
-Важная особенность Git в том, что участники могут работать и создавать версии независимо друг от друга на своих компьютерах. Каждый может работать над своей задачей, не мешая другим, даже если все редактируют один и тот же файл. Git поможет объединить изменения в одну общую версию.
+Важная особенность Git в том, что пользователи могут работать и создавать версии независимо друг от друга на своих компьютерах. Каждый может работать над своей задачей, не мешая другим, даже если все редактируют один и тот же файл. Git поможет объединить изменения в одну общую версию.
diff --git a/docs/01-02-install.md b/docs/01-02-install.md
index 9c4f972..520d7b4 100644
--- a/docs/01-02-install.md
+++ b/docs/01-02-install.md
@@ -3,14 +3,14 @@
## Проверьте наличие Git {#terminal}
В комплекте с дистрибутивом Git устанавливается программа для терминала.
-Чтобы её запустить, откройте Rstudio и в верхнем меню выберите **Tools → Terminal → New Terminal**.
+Чтобы открыть терминал в Positron, вызовите поиск команд комбинацией клавиш Ctrl + Shift + P, найдите и выберите **Terminal: Create New Terminal**.
В появившемся окне терминала введите команду `git` и нажмите клавишу Enter.
Если вы видите результат как на скриншоте ниже, то Git установлен.
Иначе нужно его установить --- см. инструкцию для вашей операционной системы ниже.
-После установки перезапустите RStudio и повторите проверку.
+После установки перезапустите Positron и повторите проверку.
-{width="100%"}
+{width="100%"}
## Windows
diff --git a/docs/01-03-shell.md b/docs/01-03-shell.md
index 5bd75b6..20f71a7 100644
--- a/docs/01-03-shell.md
+++ b/docs/01-03-shell.md
@@ -4,13 +4,14 @@
Команды для терминала вы встретите в документации и в интернете, ими легко поделиться и использовать в скриптах.
Кроме терминала есть много других способов и их даже можно использовать одновременно.
-Графические интерфейсы --- все они имеют ограничения и реализуют только часть возможностей Git, но достаточны для решения большинства задач. Это может быть интерфейс, встроенный в другие программы (например [RStudio](https://docs.posit.co/ide/user/ide/guide/tools/version-control.html), [Pycharm](https://www.jetbrains.com/help/pycharm/using-git-integration.html), [VS Code](https://code.visualstudio.com/docs/sourcecontrol/overview)) или самостоятельная программа (например [GitHub Desktop](https://github.com/apps/desktop), [GitKraken](https://www.gitkraken.com) [и многие другие](https://git-scm.com/downloads/guis));
+Графические интерфейсы --- все они имеют ограничения и реализуют только часть возможностей Git, но достаточны для решения большинства задач. Это может быть интерфейс, встроенный в другие программы (например [Positron](https://positron.posit.co/git.html), [Pycharm](https://www.jetbrains.com/help/pycharm/using-git-integration.html), [VS Code](https://code.visualstudio.com/docs/sourcecontrol/overview), [RStudio](https://docs.posit.co/ide/user/ide/guide/tools/version-control.html)) или самостоятельная программа (например [GitHub Desktop](https://github.com/apps/desktop), [GitKraken](https://www.gitkraken.com) [и многие другие](https://git-scm.com/downloads/guis));
Веб-интерфейсы --- прямо на сайте GitHub можно редактировать отдельные файлы, а также выполнять некоторые команды.
-В этом курсе мы будем работать с Git одновременно в интерфейсе RStudio и в терминале, как это делает большинство пользователей R каждый день, а также через GitHub.
-Поэтому запомните, как запустить терминал в RStudio ---
-в верхнем меню выберите **Tools → Terminal → New Terminal** ([см. скриншот в предыдущей главе](#terminal)).
+В этом курсе мы будем работать с Git одновременно в интерфейсе Positron и в терминале, как это делает большинство пользователей каждый день, а также через GitHub.
+К терминалу можно вернуться в любой момент, переключаясь между вкладками **(1) CONSOLE** и **(2) TERMINAL** на нижней панели Positron.
+
+{width="100%"}
Перед началом работы необходимо сделать несколько настроек.
Укажите свое имя и адрес электронной почты, чтобы Git верно записывал информацию об авторе изменений.
diff --git a/docs/02-01-init.md b/docs/02-01-init.md
index 436f077..97947b8 100644
--- a/docs/02-01-init.md
+++ b/docs/02-01-init.md
@@ -7,35 +7,19 @@ Git может отслеживать изменения в любой папк
**Репозиторий** --- это скрытая подпапка `.git`, в которой хранятся версии проекта и информация об изменениях.
Всё необходимое для работы Git содержится непосредственно в ней.
-Самый простой способ создать репозиторий --- вместе с проектом RStudio.
-В верхнем меню выберите [File → New Project]{.figtext}.
-В появившемся окне выберите [New directory]{.figtext}, а затем [New Project]{.figtext}.
-На последнем шаге в поле [Directory name]{.figtext} введите название папки для проекта: [penguins]{.figtext}.
-Она будет создана на вашем компьютере по адресу, указанному в поле [Create project as subdirectory of]{.figtext}.
-‼️ Не забудьте поставить галочку напротив опции [ Create a git repository]{.figtext}, иначе проект будет создан без Git репозитория.
-После нажатия кнопки [Create Project]{.figtext} окно RStudio перезагрузится с открытым проектом.
-
-
-
-При следующем запуске RStudio откроет последний проект.
-Если этого не произойдет, чтобы открыть проект в верхнем меню выберите [File → Open Project]{.figtext} или [File → Recent Projects]{.figtext}.
-
-Убедитесь в том, что проект загружен, для этого обратите внимание на следующие элементы интерфейса:
-В правом верхнем углу указано название проекта [(A)]{.figref}.
-На панели файлов (по умолчанию она в нижнем правом углу) открыта папка с файлами проекта [(B)]{.figref}.
-
-{width="680px"}
-
-Когда в RStudio открыт проект, R и Git ищут файлы в папке проекта --- это так называемая **рабочая папка или рабочая область**.
+Мы продолжим проект из курса «Введение в автоматизацию обработки данных на R». Откройте его в Positron по [инструкции из курса](https://stepik.org/lesson/2482459/step/5?unit=2520221): нажмите [Open]{.figtext} на верхней панели, выберите Open Folder… и найдите нужную папку.
+
+Если проекта нет, создайте его, как показано [в курсе](https://stepik.org/lesson/2482459/step/2?unit=2520221). Затем создайте папку `data`, скачайте файл [`penguins.csv`](https://stepik.org/media/attachments/lesson/2482459/penguins.csv) и поместите его туда.
+
+Убедитесь, что папка открыта: в панели [(1) Explorer]{.figtext} должны быть видны файлы, в том числе папка `data`.
+Откройте пункт [(2) Source Control]{.figtext} на панели слева и нажмите [Initialize Repository]{.figtext}.
+Positron создаст репозиторий в папке проекта. На панели в разделе [Changes]{.figtext} появится список файлов.
+
+Если у вас нет кнопки [Initialize Repository]{.figtext}, [проверьте установку Git](#install).
+
+{width=100%}
+
+Когда в Positron открыт проект, R и Git ищут файлы в ней --- это так называемая **рабочая папка или рабочая область**.
Подробнее про поиск и адреса файлов.
На разных компьютерах, например у разных участников, проект может находиться в разных местах.
@@ -43,10 +27,10 @@ Git может отслеживать изменения в любой папк
а у пользователя `scruz` допустим
`C:\Users\scruz\penguins`.
-Если в скрипте использовать полный адрес файла, например:
+Если в документе использовать полный адрес файла, например:
```r
-read_csv("/Users/mjordan/penguins/data/sample.csv")
+read.csv("/Users/mjordan/r-course/data/penguins.csv")
```
то он будет работать только у пользователя `mjordan`.
@@ -54,19 +38,29 @@ read_csv("/Users/mjordan/penguins/data/sample.csv")
Чтобы он работал у всех, нужно указывать адрес файла относительно рабочей папки.
```r
-read_csv("data/sample.csv")
+read.csv("data/penguins.csv")
```
-Рассмотрим созданные RStudio файлы:
+Внутри папки проекта создана папка репозитория `.git`. Открывать или изменять её содержимое не нужно, поэтому она скрыта. Для работы с репозиторием используют панель [Source Control]{.figtext} и команды в терминале.
-- `hello-git.Rproj` --- содержит настройки проекта
-- `.gitignore` --- содержит список файлов, которые Git не будет отслеживать; о том, зачем это нужно и как настроить [смотри в отдельном разделе](#gitignore)
-- `.git` --- репозиторий; это скрытая папка, чтобы ее увидеть, в меню на панели файлов выберите [More → Show Hidden Files]{.figtext}
+Как увидеть скрытую папку.
+Positron не показывает некоторые служебные папки на панели Explorer.
+Чтобы увидеть их, откройте терминал и выполните команду:
-Если файл `.gitignore` отсутствует, значит, вы не отметили галочку [ Create a git repository]{.figtext} при создании проекта или не установили Git.
-[Проверьте наличие Git](#install) и создайте проект заново.
+```shell
+ls -la
+```
+
+В Windows может потребоваться другая команда:
+
+```powershell
+Get-ChildItem -Force
+```
+
+Появится список файлов проекта, в том числе папка `.git`.
+
-Итак, у нас есть проект RStudio --- папка, в которой мы будем работать, и
+Итак, у нас есть проект --- папка, в которой мы будем работать, и
внутри нее Git репозиторий --- скрытая папка, в которой будут храниться версии проекта.
Приступим к созданию первой версии.
diff --git a/docs/02-02-commit.md b/docs/02-02-commit.md
index 5cd252d..4533113 100644
--- a/docs/02-02-commit.md
+++ b/docs/02-02-commit.md
@@ -5,43 +5,26 @@ Git отслеживает изменения в файлах, находящи
а при помощи версий --- или, в терминах Git, **коммитов (commit)**.
Коммиты нужно создавать вручную, выбирая, какие файлы вы хотите зафиксировать, добавив в версию.
-Откройте в RStudio панель с названием [Git]{.figtext} (по умолчанию она в верхнем правом углу).
-В отличие от списка файлов, на ней выводятся только те файлы, которые были изменены по сравнению с последней версией (коммитом).
-Так как мы еще не создали ни одной версии, то в списке выводятся оба файла, созданных с проектом: `.gitignore` и `penguins.Rproj`
-
-
-{width=680px}
-
-Нет панели Git?
-Значит, вы не отметили галочку [Create a git repository]{.figtext} при создании проекта или не установили Git.
-[Проверьте наличие Git](#install) и [создайте проект заново](#git-init).
-
-
-Чтобы создать коммит (версию), отметьте файлы галочкой в столбце [Staged]{.figtext}.
-Галочка напротив файла означает, что он добавлен в **индекс (staging)** ---
-промежуточную область для выбора файлов, которые будут зафиксированы.
-Неотмеченные файлы останутся в рабочей папке, но в коммит не попадут.
-Вы можете добавить их в следующую версию позже или отменить изменения.
-Нажмите кнопку [Commit]{.figtext}.
-
-{width=400px}
-
-В открывшемся окне можно подробнее посмотреть, что изменилось в файлах.
-Просмотрите изменения и введите краткое описание в поле [Commit message]{.figtext}.
-В нашем примере был создан проект, это и будет подходящим описанием.
+Откройте в Positron панель [Source Control]{.figtext}.
+В отличие от панели с файлами [Explorer]{.figtext}, на ней выводятся только те файлы, которые были изменены по сравнению с последней версией (коммитом).
+Так как мы еще не создали ни одной версии, то в списке выводятся все файлы проекта.
+
+Чтобы создать коммит (версию), наведите на заголовок [Changes]{.figtext} и нажмите `+`.
+После этого файлы окажутся в разделе [Staged Changes]{.figtext} --- **индексе (staging)**,
+промежуточной области для выбора файлов, которые войдут в новую версию (коммит).
+Можно добавлять файлы и по одному, нажимая `+` только напротив нужных.
+Файлы, не добавленные в индекс, останутся в рабочей папке, но не войдут в коммит.
+Вы можете добавить их в следующую версию позже или отменить изменения, нажав `↶`.
+
+Введите краткое описание в поле [Message]{.figtext}.
+В нашем примере мы закончили курс R, это и будет подходящим описанием: `Добавил файлы курса по R`.
Нажмите кнопку [Commit]{.figtext} под текстовым полем.
-{width=600px}
-
-В открывшемся окне не должно быть ошибок, но должно быть сообщение как на изображении ниже.
-
-{width=600px}
+{width=100%}
-Закройте окно с сообщением и окно создания коммита, вернитесь к RStudio.
-Обратите внимание, теперь панель [Git]{.figtext} со списком измененных файлов пуста ---
+Обратите внимание, теперь панель [Source Control]{.figtext} со списком измененных файлов пуста ---
это значит, что изменений по сравнению с последней версией, которую мы только что создали, нет.
-{width=400px}
Теперь у нас есть версия проекта, к которой можно вернуться в любой момент и начать работу с этого места.
diff --git a/docs/02-03-practice.md b/docs/02-03-practice.md
index 09043a9..ab5359c 100644
--- a/docs/02-03-practice.md
+++ b/docs/02-03-practice.md
@@ -24,85 +24,101 @@
## Импорт данных
-Загрузите файл с данными [penguins.csv](https://github.com/yoursdearboy/git-101/releases/download/penguins/penguins.csv) в папку проекта.
-Если нужно открыть папку в файловом менеджере операционной системы, в меню на панели [Files]{.figtext} выберите [More → Show Folder in New Window]{.figtext}.
-Вернитесь в RStudio и убедитесь, что файл `penguins.csv` появился на панели [Git]{.figtext}.
-{width=400px}
+Создайте документ Quarto для анализа и сохраните его под названием `paper.qmd` в корне проекта. Вспомнить как это делается можно в [курсе](https://stepik.org/lesson/2482460/step/2?unit=2520222).
+Замените содержимое документа кодом ниже и сохраните файл.
-Создайте скрипт для анализа. В меню на панели [Files]{.figtext} выберите [New File → R Script]{.figtext} и введите название файла `penguins.R`
-{width=400px}
+```` markdown
+---
+title: "Длина клюва пингвинов"
+format:
+ html:
+ embed-resources: true
+---
-Скопируйте следующий код для импорта данных и сохраните его в созданном файле.
-Выделите обе строки и запустите, нажав кнопку [Run]{.figtext} в правом верхнем углу редактора RStudio.
-Если импорт данных работает, в консоли появится вектор из чисел.
+```{r}
+data <- read.csv("data/penguins.csv")
-```r
-data <- read.csv("penguins.csv")
-data$bill_length_mm
+mean(data$bill_len)
```
+````
-Убедитесь, что файл скрипта также появился на панели [Git]{.figtext}.
-Добавьте оба файла в индекс, отметив галочкой в столбце [Staged]{.figtext}, и создайте коммит.
-В окне коммита обязательно проверьте содержимое скрипта `penguins.R`,
-так как часто пользователи забывают сохранить файл перед добавлением в индекс.
+Выполните чанк.
+Функция `mean()` вернёт `NA`, потому что в данных нет двух значений длины клюва.
+Пока вы проходили предыдущий курс, мы поймали этих двух пингвинов и измерили их клювы.
+Скачайте [обновлённые данные](https://raw.githubusercontent.com/yoursdearboy/git-101/positron/course-project/updates/penguins.csv) и замените ими файл `data/penguins.csv`. Снова выполните чанк и убедитесь, что средняя длина клюва равна `43.91802`.
-{width=690px}
+На панели [Source Control]{.figtext} появятся два изменения: новый документ `paper.qmd` и обновлённый файл `penguins.csv`.
+Выберите его и проверьте, чем новая версия отличается от прежней:
+строки из старого файла выделяются красным цветом, а из нового зеленым.
-После создания коммита список измененных файлов на панели [Git]{.figtext} должен быть пуст.
+Добавьте в индекс и документ `paper.qmd`, и обновлённый файл `penguins.csv`: без данных результат анализа нельзя будет воспроизвести.
+Выберите файл `paper.qmd` и проверьте содержимое: если он пустой, вы забыли сохранить файл, а Git работает только с сохраненными изменениями.
+Создайте коммит с описанием «Импортировал данные пингвинов».
+
+{width=100%}
+
+После создания коммита список изменённых файлов на панели [Source Control]{.figtext} снова должен быть пуст.
## Визуализация
Анализ новых данных полезно начинать с исследования распределения.
-Для этого присвоим данные с длиной клюва переменной `x` и построим несколько вариантов гистограммы с разной шириной столбца.
-Сохраните приведённый ниже код в тот же файл, запустите и посмотрите графики.
+Для этого присвоим данные с длиной клюва переменной и построим несколько вариантов гистограммы с разной шириной столбца.
+Замените код чанка на приведённый ниже, запустите и посмотрите графики.
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
-hist(x, breaks = seq(40, 60, 4))
-hist(x, breaks = seq(40, 60, 2))
-hist(x, breaks = seq(40, 60, 1))
-```
+``` r
+data <- read.csv("data/penguins.csv")
-После сохранения файл `penguins.R` снова появился в списке изменений на панели [Git]{.figtext}.
-Добавьте его в индекс и проверьте изменения в окне коммита.
+x <- data$bill_len
+
+hist(x, breaks = seq(30, 60, 3))
+hist(x, breaks = seq(30, 60, 2))
+hist(x, breaks = seq(30, 60, 1))
+```
-Вы уже могли заметить, что новые строки выделяются зеленым цветом.
-Красным цветом выделяются удаленные строки, а неизмененные остаются белыми.
+Сохраните файл `paper.qmd` и он опять появится в списке изменений на панели [Source Control]{.figtext}.
+Выберите его и проверье изменения: красным - старые строки, зеленым — новые.
Такой формат записи изменений называется **«дифф» (diff)**.
-Обратите внимание, что по умолчанию Git анализирует строки, а не отдельные слова или символы.
-Поэтому получился следующий дифф: старая вторая строка была удалена, новая вторая строка добавлена (см. номера строк слева), хотя мы всего лишь добавили присвоение `x <- ` в начало строки.
-{width=690px}
+Обратите внимание, что по умолчанию Git сравнивает строки, а не отдельные слова или символы.
+Несмотря на то, что мы заменили `mean()` на присвоение `x <- ` в 11-й строке, Git показывает прежнюю строку как удалённую, а новую — как добавленную. Номера слева указывают положение этих строк в старой и новой версиях файла.
-Убедитесь, что сделанные изменения соответствуют диффу на скриншоте выше, и создайте новый коммит с описанием «Добавили гистограммы для длины клюва».
+{width=100%}
+
+Добавьте `paper.qmd` в индекс, введите описание «Добавил гистограммы для длины клюва» и нажмите [Commit]{.figtext}.
+После создания коммита список изменённых файлов снова должен быть пуст.
## Экспорт
Гистограмма с шириной столбца 2 выглядит наиболее информативно.
-Такой график можно и опубликовать.
-Чтобы экспортировать изображение, сохраните следующий код в файл скрипта и запустите его.
+Соберём HTML-отчёт, чтобы поделиться с коллегами.
+
+Оставьте в коде чанка только один вариант гистограммы и сохраните файл.
+
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+``` r
+data <- read.csv("data/penguins.csv")
-png("penguins-hist.png")
-hist(x, breaks = seq(40, 60, 2))
-dev.off()
+x <- data$bill_len
+
+hist(x, breaks = seq(30, 60, 2))
```
-После этого в списке изменений на панели [Git]{.figtext}, кроме файла `penguins.R`, появился файл с изображением `penguins-hist.png`.
+Нажмите [Preview]{.figtext} вверху окна редактора.
+В корне проекта появится файл `paper.html`.
Его мы тоже добавим в коммит.
-Во-первых, так другие участники, загрузив проект, сразу увидят результат без необходимости запускать скрипт.
+Во-первых, так другие участники, загрузив проект, сразу увидят результат без необходимости выполнять код.
Во-вторых, если вы измените ширину столбца или другие настройки графика, будет удобно сравнить старую и новую версии.
-Добавьте оба файла в индекс, проверьте изменения, изучив дифф, и создайте коммит с описанием «Сохранили гистограмму длины клюва».
+{width=100%}
+
+Добавьте оба файла в индекс и создайте коммит с описанием «Собрал отчёт о длине клюва».
+Проверьте, что на панели [Source Control]{.figtext} не осталось «незакомиченных» изменений.
-На этом остановимся и посмотрим историю версий в журнале Git.
+На этом остановимся и далее посмотрим историю версий в журнале Git.
+А пока несколько советов.
::: {.callout .callout-info}
Делайте коммиты часто и не придавайте слишком большое значение планированию.
diff --git a/docs/02-04-log-n-diff.md b/docs/02-04-log-n-diff.md
index a531118..e775c34 100644
--- a/docs/02-04-log-n-diff.md
+++ b/docs/02-04-log-n-diff.md
@@ -5,23 +5,20 @@
Журнал позволяет изучить изменения от других участников или вспомнить свои собственные, и зачем они сделаны.
Поэтому так важно писать ясные и содержательные описания коммитов.
Используя журнал, можно найти, когда сделаны изменения, приведшие к ошибке, и вернуть проект к предыдущему состоянию.
-В конце концов, его можно использовать для отчетности и бизнесс-аналитики по проекту.
+В конце концов, его можно использовать для отчетности и бизнес-аналитики по проекту.
-Чтобы открыть журнал, нажмите кнопку [History]{.figtext} на панели [Git]{.figtext}.
+Чтобы открыть журнал, на панели [Source Control]{.figtext} разверните раздел [Graph]{.figtext} внизу.
В открывшемся окне выводится список коммитов в обратном порядке --- последние коммиты находятся вверху.
-В списке выводится краткая информация о коммите, а под списком подробная информация по выделенному коммиту.
-{width=690px}
+При наведении на коммит появляется краткая информация: имя автора, которое [мы указали в настройках](#setup), дата и описание, и самое важное — хэш коммита, его уникальный идентификатор. В примере это `967f8ad`, у вас он будет другим.
-- SHA --- так называемый хэш коммита, который является его уникальным идентификатором в репозитории
-- Author --- автор коммита \, [которые были указаны в настройках](#setup)
-- Date --- дата и время создания коммита
-- Subject --- описание коммита
-- Parent --- хэш (идентификатор) предыдущего коммита
+Кликните на коммит, чтобы посмотреть список изменений. Выберите файл, чтобы открыть дифф --- изменения, сделанные в этом коммите по сравнению с предыдущей версией.
-Еще ниже показан дифф --- изменения, сделанные в этом коммите по сравнению с предыдущим.
-Для больших файлов выводятся только те строки, которые поменялись, а также несколько строк выше и ниже, чтобы был понятен контекст.
-Если нажать кнопку [View file]{.figtext} справа от названия файла, можно увидеть его полное содержимое, каким оно было зафиксировано создания коммита.
+{width=100%}
+
+Если нужна история только одного файла, выберите его на панели [Explorer]{.figtext} и откройте раздел [Timeline]{.figtext} внизу той же панели.
+Выберите коммит, чтобы посмотреть изменения.
+В разделе [Timeline]{.figtext} также есть автоматические контрольные точки, которые создаются при сохранении файла. Они не входят в Git-репозиторий и исчезнут через некоторое время.
Даже если вы работаете в одиночку, полезно иметь под рукой историю изменений.
Но по настоящему эта функция полезна,
diff --git a/docs/03-01-branches.md b/docs/03-01-branches.md
index 83ea721..66f0dd0 100644
--- a/docs/03-01-branches.md
+++ b/docs/03-01-branches.md
@@ -16,60 +16,51 @@ Git позволяет эффективно объединять эти изме
Для этого используются так называемые ветки (branch).
Почему ветки? Потому что начиная с выбранного коммита история изменений разветвляется.
+
+::: {style="float: left; clear: both; width: 200px; margin-right: 20px;"}
+{width=100%}
+:::
+
По умолчанию, мы работаем в ветке `main`
(ранее ветка по умолчанию называлась `master`, будьте готовы встретить и такое название).
Ее можно сравнить со стволом дерева --- вот он слева на изображении.
-В нашем проекте с пингвинами в ветке `main` 4 коммита, последний из которых содержит гистограмму для публикации.
-
-{width=600px}
+В нашем проекте с пингвинами в ветке `main` 4 коммита и от любого из них можно начать новую ветку.
Представим ситуацию --- из журнала приходит ответ Рецензента 2, в котором он просит заменить гистограмму на ящик с усами.
С одной стороны, можно податься в журнал, где знают, что такое гистограмма,
с другой, можно хотя бы попробовать удовлетворить пожелания рецензента и,
-если нам не понравится новая диаграмма, просто удалить изменения.
+если нам не понравится новая диаграмма, просто удалить ветку с изменениями.
# Создание ветки {#git-branch}
Чтобы спокойно поэкспериментировать создадим новую ветку.
Так будет проще удалить изменения и они не будут мешать, если мы захотим поправить что-то действительно важное в основной ветке `main`.
-В RStudio нажмите кнопку [New Branch]{.figtext} [(A)]{.figref}
-
-{width=400px}
+В Positron нажмите название текущей ветки `main` в строке состояния внизу окна и выберите [Create new branch…]{.figtext}.
+В появившемся поле введите название, например `boxplot`, и нажмите Enter.
+Positron переключится на новую ветку `boxplot`.
+Обратите внимание, что название ветки в строке состояния поменялось с `main` на `boxplot`.
-В появившемся окне введите название, например `boxplot` и нажмите кнопку [Create]{.figtext}.
-Откроется окно с сообщением, что мы переключились на ветку `boxplot`,
-можете закрыть его кнопкой [Close]{.figtext}.
+{width=100%}
-{width=200px}
-
-{width=400px}
+Вернемся к пингвинам.
+Замените вызов `hist()` в чанке на вызов `boxplot()`:
-Обратите внимание, что название ветки на панели [Git]{.figtext}, рядом с кнопкой создания ветки [(A)]{.figref}, поменялось с `main` на `boxplot`.
-Вернемся к пингвинам.
-Замените содержимое скрипта `penguins.R` на следующее:
+``` r
+data <- read.csv("data/penguins.csv")
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+x <- data$bill_len
-png("penguins-boxplot.png")
boxplot(x)
-dev.off()
```
-Сохраните файл и выполните скрипт.
-Обратите внмание, что мы поменяли название файла.
-Старый файл `penguins-hist.png` в этой версии нам не нужен и его необходимо удалить.
-Не переживайте, благодаря Git, в основной ветке `main` он останется.
-На панели [Files]{.figtext} отметьте галочкой файл `penguins-hist.png` [(A)]{.figref} и нажмите кнопку [Delete]{.figtext} [(B)]{.figref}.
-
-{width=400px}
+Сохраните файл и нажмите [Preview]{.figtext}, чтобы обновить отчёт `paper.html`.
+Не переживайте, благодаря Git в основной ветке `main` останется прежний вариант с гистограммой.
-Отметьте все изменения для фиксации и создайте коммит.
-Обратите внимание, что удаление файла это тоже изменение, которое надо отметить.
+Отметьте все изменения для фиксации и создайте коммит с описанием «Заменил гистограмму на ящик с усами».
+Обратите внимание, что в коммит должны попасть и исходный документ `paper.qmd`, и обновлённый отчёт `paper.html`.
-{width=400px}
+{width=100%}
Теперь отложим эксперименты и вернемся к прежней версии.
diff --git a/docs/03-02-checkout.md b/docs/03-02-checkout.md
index 9bfc862..3167504 100644
--- a/docs/03-02-checkout.md
+++ b/docs/03-02-checkout.md
@@ -1,35 +1,41 @@
# Переключение веток {#git-checkout}
-Для переключения ветки нажмите на название текущей ветки [(A)]{.figref} на панели [Git]{.figtext}.
+Для переключения ветки нажмите на название текущей ветки в строке состояния Positron.
В выпадающем списке выберите ветку на которую хотите переключиться (`main`).
-{width=400px}
+{width=100%}
-Убедитесь, что код скрипта вернулся к прежнему состоянию и строит гистограмму,
-а в списке файлов находится файл с гистограммой `penguins-hist.png` и нету файла `penguins-boxplot.png`.
-
-{width=400px}
+Убедитесь, что код документа `paper.qmd` вернулся к прежнему состоянию и вызывает функцию `hist()`,
+а отчёт в окне просмотра строит гистограмму вместо ящика с усами.
Это было просто.
Но есть один случай, когда
Git откажется переключать ветку --- если это приведет к потере данных.
-Например, замените содержимое скрипта `penguins.R` на следующее (добавилась подпись оси X):
+Например, замените код чанка на следующий (добавилась подпись оси X):
+
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+``` r
+data <- read.csv("data/penguins.csv")
-png("penguins-hist.png")
-hist(x, breaks = seq(40, 60, 2), xlab = "Bill length, mm")
-dev.off()
+x <- data$bill_len
+
+hist(x, breaks = seq(30, 60, 2), xlab = "Bill length, mm")
```
+::: {style="float: left; clear: both; width: 200px; margin-right: 20px;"}
+{width=100%}
+:::
+
Сохраните файл и попробуйте переключиться на ветку `boxplot`.
-Вы получите сообщение как на скриншоте ниже.
-Если бы Git переключил ветку, ему бы пришлось перезаписать файл `penguins.R`, в который мы внесли изменения, но не зафиксировали.
-Поэтому, чтобы не потерять изменения при переключении, сначала необходимо их зафиксировать создав коммит.
+Вы увидите сообщение, как на скриншоте слева.
+Если бы Git переключил ветку, ему бы пришлось перезаписать файл `paper.qmd`, в который мы внесли изменения, но не зафиксировали.
+Positron предлагает временно спрятать изменения (**Stash**), чтобы можно было переключиться.
+Но есть решение лучше — зафиксировать их создав коммит.
+Нажмите **Cancel**, чтобы отменить переключение.
+Добавьте изменения в индекс и создайте коммит с описанием «Добавил подпись оси».
-{width=690px}
+{width=100%}
-Создайте коммит и попробуйте переключиться на ветку `boxplot` и обратно на ветку `main`.
+Попробуйте снова переключиться на ветку `boxplot`.
+На этот раз переключение должно пройти без ошибок (убедитесь, что код в редакторе изменился).
diff --git a/docs/03-03-merge.md b/docs/03-03-merge.md
index a73aef7..903805e 100644
--- a/docs/03-03-merge.md
+++ b/docs/03-03-merge.md
@@ -1,23 +1,21 @@
# Слияние веток {#git-merge}
-[Откройте окно истории](#git-log) и выберите в фильтре сверху показывать все ветки [(all branches)]{.figtext} и все коммиты [(all commits)]{.figtext}.
-На диграмме наглядно видно почему это называется веткой.
+На панели [Source Control]{.figtext} разверните раздел [Graph]{.figtext} внизу, как показано в главе
+[просмотр истории](#git-log).
+Справа от заголовка [Graph]{.figtext} нажмите [Auto]{.figtext} с иконкой ветки
+и в выпадающем меню выберите [All]{.figtext}.
+Диаграмма покажет обе ветки, и теперь должно быть ясно, почему они так называются.
-{width=690px}
+{width=100%}
-Если мы или другой участник проекта, решим принять эти изменения в основную ветку `main`,
-нам нужно выполнить операцию «слияния» (merge).
-В RStudio нет встроенной возможности слияния веток, это необходимо делать в терминале.
-К счастью, команда совсем не сложная.
+Если мы или другой участник проекта решим принять эти изменения в основную ветку `main`,
+нам нужно выполнить операцию **«слияния» (merge)**.
Для начала переключитесь на ветку, в которую будут вливаться изменения ---
в нашем случае это `main` ([см. переключение веток](#git-checkout)).
-Откройте терминал ^[В меню RStudio выберите Tools → Terminal → New Terminal] и введите команду для слияния с веткой `boxplot`.
+На панели [Source Control]{.figtext} нажмите кнопку с троеточием справа от заголовка [Changes]{.figtext}. Выберите [Branch → Merge…]{.figtext}, а затем --- ветку `boxplot`.
-```sh
-git merge boxplot
-
-```
+{width=100%}
Git попытается автоматически объединить изменения из обеих веток и создать новый коммит.
В большинстве случаев этого достаточно,
@@ -27,68 +25,60 @@ Git попытается автоматически объединить изм
Git предпочтет выдать ошибку и попросит вас разрешить конфликт.
В списке изменений мы видим,
-что Git автоматически выбрал изменения связанные с новым и старым файлом для графика
-`penguins-hist.png` и `penguins-boxplot.png`,
-но лишь частично для скрипта `penguins.R`.
+что Git автоматически добавил в индекс отчёт `paper.html` из ветки `boxplot`,
+но не документ `paper.qmd`, который отмечен восклицательным знаком.
+
+Причина в том, что после изменения кода графика в ветке `boxplot`
+мы изменили ту же строку в ветке `main`.
+Откройте файл `paper.qmd`.
+Git сохранил в нём обе версии кода и разделил их специальными маркерами:
-{width=400px}
+- после строки `<<<<<<< HEAD` идёт версия из текущей ветки `main`, выделенная зелёным;
+- строка `=======` отделяет две версии друг от друга;
+- строка `>>>>>>> boxplot` завершает версию из ветки `boxplot`, выделенную синим.
-Причина в том, что мы вносили изменения в код графика в ветке `main` после того как изменили его в ветке `boxplot`.
-Откройте файл `penguins.R`.
-Git любезно оставил для нас обе версии кода разделив специальными символами.
-После строки `<<< HEAD` идет версия из текущей ветки,
-строка `===` отделяет две версии друг от друга,
-а строка `>>> boxplot` завершает версию из ветки `boxplot`.
+{width=100%}
-{width=690px}
+Нам нужно объединить изменения в одну версию и удалить маркеры.
+Важно понимать, что это не часть интерфейса Positron, а обычный текст, который Git вставил прямо в файл.
+Поэтому вместо одной строки у нас теперь пять (строки 13-17) и это не валидный синтаксис R:
+попробуйте нажать **Preview** или выполнить чанк и убедитесь в этом.
-Наша задача переписать выделенный участок (строки 4-12) в одну версию и убрать спецсимволы.
-Важно понимать, что Git просто вставил в скрипт кусок текста,
-но это все еще обычный R скрипт и мы должны привести его в рабочее состояние.
+Приведем документ в рабочее состояние:
+за основу возьмём версию из ветки `boxplot`, но добавим в неё подпись оси из ветки `main`.
+Удалите строки 13-15 со старой версией и разделяющими маркерами.
+Добавьте подпись оси в вызов `boxplot()`.
+У ящика с усами длина клюва показана по оси Y, поэтому для подписи используем аргумент `ylab`.
+Также удалите строку 17 с маркером `>>>>>>>`.
+В итоге должен получиться такой код.
-Нам нужна версия из ветки `boxplot`, но мы хотим добавить в нее подпись оси, как это было сделано в ветке `main`.
-Для этого оставим нижнюю версию (строки 9-11) и удалим лишние строки (4-8 и 12)
-и добавим подпись, только для ящика с усами это должна быть подпись оси Y.
-В итоге должен получиться следующий код.
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+``` r
+data <- read.csv("data/penguins.csv")
+
+x <- data$bill_len
-png("penguins-boxplot.png")
boxplot(x, ylab = "Bill length, mm")
-dev.off()
```
-Сохраните файл и выполните скрипт.
-Создайте коммит и
-не забудьте отметить галочкой внесенные изменения,
-в том числе обновившийся файл `penguins-boxplot.png`, который теперь содержит подпись оси.
-Обычно сообщение коммита о слиянии веток содержит следующий текст «Merge branch название-ветки», но можете придумать свое.
+Сохраните файл и нажмите [Preview]{.figtext}, чтобы обновить отчёт.
+Добавьте в индекс изменённые файлы `paper.qmd` и `paper.html`.
+Отчёт обновился, потому что по сравнению с версией из ветки `boxplot` в нём появилась подпись оси.
+Создайте коммит.
+Описание слияния обычно выглядит так: «Merge branch название-ветки»,
+но можете написать своё.
-{width=400px}
+{width=100%}
Итак, мы успешно слили изменения из ветки `boxplot` в основную ветку `main`.
Теперь можно продолжить работу в основной ветке.
Еще лучше будет создать очередную ветку для новых изменений, выполнить работу в ней и точно так же слить в основную.
-{width=690px}
-
-Как удалить ветку?
Слитую ветку можно удалить.
-В RStudio для этого нет встроенных средств, поэтому придется использовать терминал.
-Выполните команду:
+На панели [Source Control]{.figtext} нажмите кнопку с троеточием справа от заголовка [Changes]{.figtext}.
+Выберите [Branch → Delete Branch…]{.figtext}, а затем ветку `boxplot`.
-```sh
-git branch -d boxplot
-```
-
-Если ветка не была слита, Git откажется ее удалять, ведь могут быть потеряны сделанные в ней изменения.
-Если вы действительно уверены, что они вам не нужны и вы хотите удалить не слитую ветку, выполните команду:
-
-```sh
-git branch -D boxplot
-```
-
+Если ветка не была слита, Git предупредит, что при удалении можно потерять сделанные в ней изменения.
+Удаляйте такую ветку только в том случае, если уверены, что изменения больше не нужны.
diff --git a/docs/04-01-github.md b/docs/04-01-github.md
index 928b329..20f3502 100644
--- a/docs/04-01-github.md
+++ b/docs/04-01-github.md
@@ -6,34 +6,10 @@ GitHub --- это веб-сервис для хранения Git репозит
Ваши файлы размещаются на удаленном сервере и доступны публично или приватно для загрузки другими пользователями. В некотором смысле это аналог Dropbox или Google Drive для Git.
Помимо хранения репозиториев, GitHub предоставляет другие инструменты: отслеживание задач, обсуждение изменений, запуск тестов и сборок и многое другое.
-Для работы с GitHub вам понадобится зарегистрировать учетную запись и создать токен --- отдельный пароль для Git на вашем компьютере.
-
-## Регистрация на GitHub
-
-Перейдите на сайт github.com и зарегистрируйте учетную запись нажав на кнопку [Sign up]{.figtext} в верхнем правом углу или войдите в существующую учетную запись нажав [Sign in]{.figtext}.
+Для работы с GitHub нужна учётная запись. Откройте github.com.
+Если учётной записи нет, нажмите [Sign up]{.figtext} в правом верхнем углу и зарегистрируйтесь. Если она уже есть, нажмите [Sign in]{.figtext} и войдите.
E-mail при регистрации не обязательно должен совпадать с указанным при настройке Git в [Главе 1](#setup). Дополнительные e-mail адреса можно добавить после регистрации [на странице настроек](https://github.com/settings/emails).
Это рекоммендуется сделать, чтобы GitHub мог ассоциировать сделанные на компьютере коммиты с вашей учетной записью онлайн.
-## Создание токена
-
-В целях безопасности, GitHub не позволяет использовать пароль от веб-сайта при работе с Git,
-а требует создать так называемый **Personal Access Token** --- отдельный пароль специально для Git на вашем компьютере.
-[Во всех случаях, когда Git запрашивает пароль от GitHub, необходимо вводить токен, а не пароль от веб-сайта.]{}
-
-Для этого перейдите по ссылке github.com/settings/tokens,
-авторизуйтесь и нажмите **Generate new token**, в выпадающем списке выберите **classic**.
-На новой странице введите название токена, например Work.
-Отметьте следующие права `repo`, `workflow`, `user`
-и нажмите зеленую кнопку **Generate token** в конце страницы.
-
-{width=100%}
-{width=100%}
-
-Не забудьте скопировать и сохранить ваш токен - он выглядит как строка вида `ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`.
-После того как вы закроете страницу посмотреть созданный токен невозможно.
-Храните его в надежном месте как пароль.
-
-{width=100%}
-
Теперь мы готовы опубликовать наш репозиторий на GitHub.
diff --git a/docs/04-02-remote.md b/docs/04-02-remote.md
index 5db3803..0cd29fb 100644
--- a/docs/04-02-remote.md
+++ b/docs/04-02-remote.md
@@ -1,4 +1,4 @@
-# Удаленный репозиторий {#git-remote}
+# Удалённый репозиторий {#git-remote}
@@ -7,37 +7,44 @@
{width=400px}
-В открывшейся форме достаточно заполнить только название репозитория в поле **Repository name**, например `penguins`.
+В открывшейся форме достаточно заполнить только название репозитория в поле **Repository name**, например `r-course`.
Остальные поля оставьте по умолчанию, мы только разберем за что они отвечают.
-- Description --- краткое описание
-- Public / Private --- настройка доступа
+- **Description** --- краткое описание
+- **Choose visibility** --- настройка доступа
- Public --- кто угодно сможет просматривать ваши файлы, но только отдельно добавленные пользователи смогут их изменять
- Private --- только отдельно добавленные пользователи смогут просматривать и изменять файлы
-- Initialize this repository with --- этот раздел позволяет добавить в создаваемый репозиторий несколько типовых файлов `README` `.gitignore` и `LICENSE`; не отмечайте ни один из них, потому что в нашем репозитории на компьютере уже есть файлы и они будут конфликтовать с этими.
+- **Add README**, **.gitignore**, **license** добавляет в создаваемый репозиторий шаблоны этих файлов; не отмечайте ни один, потому что в нашем репозитории на компьютере уже есть файлы и они будут конфликтовать с этими.
Внизу страницы нажмите [Create repository]{.figtext}.
Пример заполненной формы
-{width=600px}
+{width=600px}
-*Удалить это? Там и так на форме все написано, только что на англ. Оставить только предупреждение, чтобы не жали Initialize this repository with.*
-*Со скрином формы репозитория тоже ту мач?*
-Для созданного репозитория GitHub сгенерировал набор команд быстрой настройки, воспользуемся ими.
-Сначала необходимо убедиться, что напротив адреса репозитория выбрана опция доступа через [HTTPS]{.figtext} [(A)]{.figref}.
-Далее скопируйте все три команды из раздела для существующего репозитория (**... or push an existing repository from the command line**, [B]{.figref}) и выполните в терминале ^[В меню RStudio выберите Tools → Terminal → New Terminal].
-На запрос пароля скопируйте и вставьте сгенерированный в предыдущей главе токен.
+Для созданного репозитория GitHub сгенерировал набор команд для быстрой настройки, воспользуемся ими.
+Сначала необходимо убедиться, что напротив адреса репозитория выбрана опция доступа через [HTTPS]{.figtext} [(1)]{.figref}.
-{width=100%}
+{width=100%}
+Далее скопируйте все три команды из раздела для существующего репозитория (**... or push an existing repository from the command line**, [2]{.figref}) и выполните их в терминале. Если закрыли терминал или он занят Quarto, [создайте новый терминал](#terminal).
+Positron предложит войти в GitHub. Выберите [Allow]{.figtext},
+запомните код появившийся в новом окне, затем нажмите [Copy & Continue to Browser]{.figtext}.
+
+{width=100%}
+
+В открывшемся окне браузера разрешите доступ, введите код и завершите вход.
+Вернитесь в Positron.
+
+
+
+Мы связали наш локальный репозиторий с удаленным при помощи команды `git remote add` --- это необходимо было сделать один раз.
+И выполнили команду `git push` --- отправить локальные коммиты в удаленный репозиторий, это необходимо делать регулярно и для этого Positron есть интерфейс.
-Мы связали наш локальный репозиторий с удаленным при помощи команды **remote add** --- это необходимо было сделать один раз.
-И выполнили команду **push** --- отправить сделанные фиксации в удаленный репозиторий, это необходимо делать регулярно и для этого в интерфейсе RStudio есть кнопка на панели [Git]{.figtext}.
Если команды выполнились успешно, файлы были загружены на GitHub.
Обновите страницу репозитория и проверьте содержимое файлов.
-{width=100%}
+{width=100%}
diff --git a/docs/04-03-push-pull.md b/docs/04-03-push-pull.md
index 978d26b..5057ea8 100644
--- a/docs/04-03-push-pull.md
+++ b/docs/04-03-push-pull.md
@@ -2,65 +2,63 @@
-На предыдущем шаге мы загрузили изменения из нашего локального репозитория в удаленный репозиторий на GitHub при помощи команды `push` в терминале.
+На предыдущем шаге мы загрузили изменения из локального репозитория в удалённый репозиторий на GitHub при помощи команды `git push` в терминале.
+Git не синхронизирует изменения автоматически, это необходимо делать вручную.
-Git не синхронизирует изменения автоматически, это необходимо делать вручную, используя команду push ил кнопку [Push]{.figtext} в интерфейсе RStudio на панели [Git]{.figtext}.
+Создадим и загрузим ещё один коммит. Добавьте в `paper.qmd` перед чанком с графиком короткое пояснение, например:
-Создадим и загрузим еще один коммит. Например, добавим небольшой комментарий к коду, чтобы человеку открывшему его впервые было легче разобраться.
-
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
-
-# Ящик с усами для длины клюва
-
-png("penguins-boxplot.png")
-boxplot(x, ylab = "Bill length, mm")
-dev.off()
+```
+Ящик с усами для длины клюва.
```
-Сохраните и закомитьте файл `penguins.R`.
-После чего нажмите кнопку [Push]{.figtext} в верхнем правом углу.
+Сохраните и закомитьте файл `paper.qmd`.
+После чего нажмите кнопку [Sync Changes]{.figtext} на панели [Source Control]{.figtext}.
-{width=100%}
+{width=100%}
Перейдите на страницу репозитория на GitHub и убедитесь, что коммит был загружен.
-Это можно понять по тексту сообщения над списком файлов и по тексту и времени изменения напротив файла `penguins.R`.
+Это можно понять по тексту сообщения над списком файлов и по тексту и времени изменения напротив файла `paper.qmd`.
-{width=100%}
+{width=100%}
GitHub позволяет вносить изменения в репозиторий из веб-интерфейса.
Эта функция используется редко, потому что код необходимо запускать и проверять на компьютере, но она полезна для небольших правок или загрузки файлов.
Создадим при помощи нее новый файл.
-Файл README --- это файл, который отображается на главной странице репозитория для краткого описания проекта. Обычно он включает описание данных и скриптов, как начать работу с проектом и тому подобное.
+Файл README --- это файл, который отображается на главной странице репозитория для краткого описания проекта. Обычно он включает описание данных и кода, как начать работу с проектом и тому подобное.
-Нажмите кнопку [Add a README]{.figtext}. В открывшемся файле введите текст в формате Markdown^[это как RMarkdown, только без возможности выполнения кода на R] (используйте или измените текст ниже)
+Нажмите кнопку [Add a README]{.figtext}. В открывшемся файле введите текст в формате Markdown^[в документе Quarto используется тот же синтаксис разметки, но README не выполняет код на R] (используйте или измените текст ниже)
и нажмите кнопку [Commit changes]{.figtext} в верхнем правом углу.
Откроется окно создания коммита, оставьте текст по умолчанию и подтвердите создание коммита нажатием кнопки [Commit changes]{.figtext}
-{width=100%}
+{width=100%}
```md
-# Пингвины «Палмер» 🐧
+# Учебный проект
-Этот репозиторий был создан в рамках курса от [Института биоинформатики](bioinf.me/education/stat),
-чтобы познакомиться с основами Git — фиксацией изменений, ветвлением и работой с GitHub.
+Этот репозиторий был создан в рамках курса [«Основы Git»](https://yoursdearboy.github.io/git-101/),
+чтобы познакомиться с фиксацией изменений, ветвлением и работой с GitHub.
-В качестве примера использованы данные о длине клюва пингвинов,
+В качестве примера использованы данные о длине клюва 🐧 пингвинов,
собранные доктором Кристен Горман на станции «Палмер» в Антарктиде.
-Содержимое репозитория:
+Файлы проекта:
-- penguins-boxplot.png — диаграмма ящик с усами, показывающая распределение длины клюва
-- penguins.R — скрипт для построения диаграммы
-- penguins.csv — данные
+- `paper.html` — готовый отчёт
+- `paper.qmd` — документ Quarto с кодом
+- `data/penguins.csv` — данные
```
-Чтобы загрузить изменения из удаленного репозитория на компьютер используется команда **pull**.
+Загрузить изменения из удалённого репозитория можно двумя способами: выполнить команду `git pull` в терминале или нажать кнопку [Pull]{.figtext} справа от заголовка [Graph]{.figtext} на панели [Source Control]{.figtext} в Positron.
+
+::: {style="float: left; clear: both; width: 200px; margin-right: 20px;"}
+{width=100%}
+:::
+
+Загрузите изменения любым из этих способов.
+Если загрузка прошла успешно, в журнале появится коммит созданный через GitHub, а в списке файлов `README.md`.
-Вернитесь в RStudio и на панели [Git]{.figtext} нажмите кнопку [Pull]{.figtext}.
-Если команда выполнилась успешно, в списке файлов появится файл `README.md`,
-а в журнале --- коммит созданный через GitHub.
+::: {.clearfix}
+:::
Как и в случае с переключением веток, Git откажется загружать изменения и выдаст ошибку, если в рабочей папке имеются незафиксированные изменения, которые конфликтуют с загружаемыми.
diff --git a/docs/04-04-pull-request.md b/docs/04-04-pull-request.md
index 71ab9a6..c254b02 100644
--- a/docs/04-04-pull-request.md
+++ b/docs/04-04-pull-request.md
@@ -4,51 +4,50 @@ Pull Request --- это механизм GitHub для слияния веток
Орнитолог проходящий мимо нашего репозитория обратит внимание, что длину клюва пингвина лучше рассматривать в зависимости от пола. Он даже может предложить необходимые изменения при помощи Pull Request.
-Создайте ветку с названием `adjust-by-sex` при помощи кнопки [New branch]{.figtext} на панели [Git]{.figtext} в RStudio. Убедитесь, что справа от кнопки вместо названия ветки по умолчанию `main` выводится название созданной ветки `adjust-by-sex`.
+Создайте ветку с названием `adjust-by-sex`, как показано в [разделе «Создание ветки»](#git-branch): нажмите `main`в строке состояния Positron и выберите [Create new branch…]{.figtext} Убедитесь, что вместо `main` выводится название созданной ветки `adjust-by-sex`.
-{width=200}
+Замените код в чанке на приведённый ниже. Чтобы посмотреть, что изменилось, выберите файл `paper.qmd` на панели [Source Control]{.figtext}.
-Отредактируйте скрипт `penguins.R`, добавив пол в код для построения ящика с усами. Код приведен ниже, не забывайте, что вы можете сравнить изменения по сравнению с оригиналом при помощи кнопки [Diff]{.figtext} на панели [Git]{.figtext}.
-```r
-data <- read.csv("penguins.csv")
-x <- data$bill_length_mm
+``` r
+data <- read.csv("data/penguins.csv")
+
+x <- data$bill_len
g <- data$sex
-png("penguins-boxplot.png")
boxplot(x ~ g, xlab = "Sex", ylab = "Bill length, mm")
-dev.off()
```
-Сохраните и выполните скрипт `penguins.R`.
-Создайте коммит включив в него скрипт и обновленную диаграмму `penguins-boxplot.png`.
+Сохраните файл и нажмите [Preview]{.figtext}, чтобы обновить отчёт.
+Создайте коммит, включив в него `paper.qmd` и `paper.html`.
+После создания коммита выберите [Publish Branch]{.figtext} на панели [Source Control]{.figtext}.
-{width=100%}
+{width=100%}
-После создания коммита нажмите кнопку [Push]{.figtext} в верхнем правом углу или на панели [Git]{.figtext}. Так как у вас полные права на редактирование репозитория, то новая ветка будет загружена на GitHub. Прохожему орнитологу пришлось бы создать свою копию репозитория или просить дать доступ средствами GitHub.
+Так как у вас полные права на редактирование репозитория, то новая ветка будет загружена на GitHub.
+Прохожему орнитологу пришлось бы создать свою копию репозитория или просить дать доступ средствами GitHub.
-Перейдите на страницу репозитория в GitHub и убедитесь, что ветка была загружена и содержит сделанные измнения, для этого выберите ее в выпадающем меню появляющемся при нажатии кнопки с названием ветки [main]{.figtext}.
+Перейдите на страницу репозитория в GitHub и убедитесь, что ветка содержит сделанные измнения, для этого выберите ее в выпадающем меню появляющемся при нажатии кнопки с названием ветки [main]{.figtext}.
-{width=100%}
+{width=100%}
При просмотре ветки отличной от основной, GitHub предложит создать из нее **Pull Request** --- предложение автору репозитория слить изменения из этой ветки. Нажмите кнопку [Contribute]{.figtext} и в выпадающем меню выберите [Open pull request]{.figtext}.
-{width=100%}
+{width=100%}
GitHub предложит ввести заголовок и описание предлагаемых изменений, правило хорошего тона кратко описать причину изменений и суть предлагаемого решения. А также, прокрутите страницу создания Pull Request и проверьте изменения, которые вы предлагаете, после чего нажмите кнопку [Create pull Request]{.figtext} под полем с описанием.
-{width=100%}
+{width=100%}
На странице Pull Request владельцу репозитория доступна опция слить предложенные изменения.
Нажмите кнопку [Merge pull request]{.figtext} внизу страницы.
-В открывшемся окне GitHub предложить ввести текст коммита, как если бы мы делали слияние ветки в терминале. Оставьте или измените текст и нажмите кнопку [Confirm merge]{.figtext}
+В открывшемся окне GitHub предложить ввести текст коммита, как если бы мы делали слияние ветки в Positron. Оставьте или измените текст и нажмите кнопку [Confirm merge]{.figtext}
После успешного слияния ветку можно удалить.
{width=100%}
{width=100%}
{width=100%}
-Вернемся к нашему проекту в RStudio.
-Слияние было выполнено онлайн на GitHub, а значит необходимо загрузить изменения в наш локальный репозиторий, т.е. сделать pull.
-Переключитесь на ветку `main` при помощи панели [Git]{.figtext} и нажмите кнопку [Pull]{.figtext}.
-Убедитесь, что теперь ветка `main` содержит актуальные изменения в файлах `penguins.R` и `penguins-boxplot.png`.
+Вернёмся к проекту в Positron. Мы выполнили слияние на GitHub, поэтому локальный репозиторий ещё не содержит новых изменений.
+Переключитесь на `main` при помощи строки состояния и загрузите изменения, как в [предыдущей главе](#git-push-pull), нажав [Pull]{.figtext}.
+Убедитесь, что файлы `paper.qmd` и `paper.html` обновились.
diff --git a/docs/04-05-clone.md b/docs/04-05-clone.md
index f22c4ab..f023465 100644
--- a/docs/04-05-clone.md
+++ b/docs/04-05-clone.md
@@ -10,25 +10,14 @@
Нажмите кнопку [Code]{.figtext} на странице репозитория,
убедитесь что выбрана опция **HTTPS** и скопируйте адрес.
-{width="600px"}
+![Меню Code на GitHub: выбрана вкладка HTTPS и показан адрес репозитория. Откройте опубликованный репозиторий и нажмите Code]()
-Создадим проект RStudio.
-В верхнем меню выберите [File → New Project]{.figtext}.
-В появившемся окне выберите [Version Control]{.figtext} и далее [Git]{.figtext}.
-В поле [Repository URL]{.figtext} вставьте адрес репозитория.
-В поле [Project directory name]{.figtext} укажите название папки для проекта ---
-т.к. папка `penguins` уже существует, используем название `penguins2`.
-Откроется окно проекта, RStudio готова к работе.
+Создадим копию проекта в Positron.
+Откройте новое окно без проекта и в палитре команд выберите [Workspaces: New Folder from Git…]{.figtext}.
+Выберите [Clone from GitHub]{.figtext} и свой репозиторий `r-course` или вставьте скопированный адрес.
+Укажите другую родительскую папку, чтобы новая копия не оказалась внутри уже открытого проекта.
+После загрузки нажмите [Open]{.figtext}.
-
+![Окно Workspaces: New Folder from Git в Positron: выбран репозиторий r-course и папка для новой копии. Выполните Workspaces: New Folder from Git… в новом окне Positron]()
Мы склонировали удаленный репозиторий на компьютер и теперь можем работать с ним как с оригинальным проектом --- делать коммиты, загружать изменения в удаленный репозиторий (push) и из него (pull).
diff --git a/docs/04-06-conclusion.md b/docs/04-06-conclusion.md
index bf1b66e..74990b2 100644
--- a/docs/04-06-conclusion.md
+++ b/docs/04-06-conclusion.md
@@ -7,7 +7,7 @@
Диаграмма ниже поможет запомнить как соотносятся действия, которые мы изучили:
[1) создание коммитов](#git-commit), [2) работа с ветками](#branch) и [3) синхронизация с удаленным репозиторием](#git-push-pull).
-{width=100%}
+{width=100%}
Рекомендуем использовать Git в своих проектах и не бояться экспериментировать с ветками.
Это помогает структурировать рабочий процесс, делает анализ данных воспроизводимым и облегчает командную работу.
diff --git a/docs/05-01-faq.md b/docs/05-01-faq.md
index 128bc53..e3b9840 100644
--- a/docs/05-01-faq.md
+++ b/docs/05-01-faq.md
@@ -34,7 +34,7 @@
:::
Создайте новую ветку - она будет содержать набор коммитов, который вы имеете сейчас,
-при помощи RStudio или командой ниже.
+при помощи Positron или командой ниже.
```sh
git branch some
@@ -42,7 +42,7 @@ git branch some
Важно! Убедитесь в том, что создали ветку. Для этого посмотрите журнал или команду `git log` и найдите напротив текущего коммита надпись с названием созданной ветки.
-Вернитесь на оригинальную ветку, как правило это `main`, при помощи RStudio или команды ниже.
+Вернитесь на оригинальную ветку, как правило это `main`, при помощи Positron или команды ниже.
```sh
git checkout main
diff --git a/docs/05-02-references.md b/docs/05-02-references.md
index b1460ee..4d30e57 100644
--- a/docs/05-02-references.md
+++ b/docs/05-02-references.md
@@ -1,5 +1,8 @@
# Ссылки {#references}
+- [Документация Positron](https://positron.posit.co/welcome.html) --- официальное руководство по интерфейсу Positron.
+- [Git Version Control](https://positron.posit.co/git.html) --- работа с Git в Positron.
+- [Quarto](https://positron.posit.co/quarto.html) --- работа с документами `.qmd` в Positron.
- [Pro Git](https://git-scm.com/book/en/v2) --- небольшая книга рекомендованная разработчиками Git. Из нее вы узнаете о внутреннем устройстве Git и научитесь работать с командой `git` в терминале. Пригодятся главы 1-3 и глава 6.
- [Happy Git and GitHub for the useR](https://happygitwithr.com/) --- материалы практического курса по Git с конференции Posit.
- [Git Cheatsheet](https://ndpsoftware.com/git-cheatsheet.html#loc=local_repo;) - интерактивная шпаргалка.
diff --git a/docs/05-03-webhooks.md b/docs/05-03-webhooks.md
index eae5442..24e6d3e 100644
--- a/docs/05-03-webhooks.md
+++ b/docs/05-03-webhooks.md
@@ -6,7 +6,7 @@ GitHub отправит информацию о событии на указан
Для обработки событий по указанному адресу должна работать программа (веб-сервер).
Многие сервисы, например Slack или Microsoft Teams, поддерживают таким образом отправку уведомлений в рабочий чат.
-Для Telegram можно воспользоваться ботом [@octo8bot](https://t.me/octo8bot).
+Для Telegram можно воспользоваться ботом [\@octo8bot](https://t.me/octo8bot).
Добавьте бота в чат и скопируйте присланный им адрес.
diff --git a/docs/404.html b/docs/404.html
index 10a7360..54e6323 100644
--- a/docs/404.html
+++ b/docs/404.html
@@ -1,57 +1,34 @@
-
+
-
-
-
- Page not found | Основы Git
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-