Как использовать Git в работе с текстами

Контроль версий полезен не только в разработке кода – с его помощью вы сможете отслеживать версии любого контента. Например, с помощью Git вы можете управлять своими текстовыми работами: это дает возможность просматривать несколько черновиков одновременно, оценивать различия между ними и даже откатываться к предыдущей версии. При необходимости вы можете поделиться своей работой с другими пользователями на GitHub или в других репозиториях Git.

В этом мануале мы покажем, как использовать Git для управления небольшим документом Markdown. Вы научитесь сохранять исходные версии, отправлять коммиты, вносить изменения, просматривать разницу между версиями и возвращаться к предыдущей версии. Такой рабочий процесс вы сможете применить к своим проектам.

Требования

Базовая установка Git на локальном компьютере. Мануал Разработка проектов с открытым исходным кодом: начало работы с Git поможет вам установить Git и предоставит дополнительную информацию.

1: Создание рабочего пространства для проекта

Чтобы управлять изменениями в тексте, нужно создать локальный репозиторий Git. Git-репозиторий должен находиться внутри существующего каталога, поэтому сначала мы создадим отдельный каталог для вашего текста (предположим, вы пишете статью):

mkdir article

Перейдите в каталог article:

cd article

С помощью команды git init создайте в текущем каталоге новый пустой репозиторий Git:

git init

Вы увидите такой вывод, если все пройдет успешно:

Initialized empty Git repository in /Users/8host/article/.git/

Файл .gitignore позволяет задать файлы, которые Git следует игнорировать. Вы можете использовать этот файл, чтобы игнорировать временные файлы, которые создает текстовый редактор, или файлы операционной системы. Например, в macOS приложение Finder создает в каталогах файлы .DS_Store. Создайте файл .gitignore, который будет их игнорировать:

nano .gitignore

Добавьте следующие строки в этот файл:

# Ignore Finder files
.DS_store

Первая строка – это комментарий, который в будущем поможет вам определить, какие файлы нужно игнорировать. Вторая строка указывает сам файл.

Сохраните файл и выйдите из редактора.

Если вам нужно игнорировать больше файлов, просто откройте файл .gitignore и добавьте новую строку для каждого файла или каталога.

Теперь репозиторий настроен, и вы можете начать работу с текстом.

2: Сохранение черновика

Git знает только о тех файлах, о которых вы ему рассказали. То есть тот факт, что в каталоге, где находится репозиторий, существует файл, не означает, что Git будет отслеживать его изменения. Вы должны добавить файл в репозиторий и затем отправить коммит об изменениях.

Создайте новый файл Markdown article.md:

nano article.md

Добавьте в него такой текст:

# How To Use Git to Manage Your Writing Project
### Introduction
Version control isn't just for code. It's for anything you want to track, including content. Using Git to manage your next writing project gives you the ability to view multiple drafts at the same time,  see differences between those drafts, and even roll back to a previous version. And if you're comfortable doing so, you can then share your work with others on GitHub or other central git repositories.
In this tutorial you'll use Git to manage a small Markdown document. You'll store an initial version, commit it, make changes, view the difference between those changes, and review the previous version. When you're done, you'll have a workflow you can apply to your own writing projects.

Сохраните и закройте файл.

Команда git status покажет вам состояние вашего репозитория. С ее помощью можно узнать, какие файлы нужно добавить, чтобы Git мог их отслеживать. Запустите эту команду:

git status

Вы увидите такой вывод:

On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
article.md
nothing added to commit but untracked files present (use "git add" to track)

В выводе секция Untracked files показывает файлы, которые Git не отслеживает. Эти файлы необходимо добавить в репозиторий, чтобы Git мог следить за изменениями в них. Используйте команду git add, чтобы сделать это:

git add .gitignore
git add article.md

Теперь запустите git status, чтобы убедиться, что эти файлы отслеживаются:

On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file:   .gitignore
new file:   article.md

Оба файла теперь перечислены в разделе Changes to be committed. Git знает о них, но пока еще не создал снапшот. Для этого используется git commit.

Когда вы создаете новый коммит, вы должны предоставить сообщение о коммите. В таком сообщении указываются все изменения. Когда вы работаете над текстом с другими людьми, пишите подробные сообщения о коммитах – это сделает вашу работу эффективнее.

Используйте команду git commit для фиксации ваших изменений:

git commit -m "Add gitignore file and initial version of article"

Вывод команды показывает, что изменения зафиксированы:

[master (root-commit) 95fed84] Add gitignore file and initial version of article
2 files changed, 9 insertions(+)
create mode 100644 .gitignore
create mode 100644 article.md

Используйте команду git status, чтобы уточнить состояние репозитория:

git status

Вывод команды покажет, что никаких изменений, которые нужно добавить или зафиксировать, на данный момент нет.

On branch master
nothing to commit, working tree clean

3: Сохранение ревизии

Итак, вы добавили исходную версию статьи. Теперь пора добавить больше текста – вы увидите, как управлять изменениями с помощью Git.

Откройте статью в текстовом редакторе:

nano article.md

Добавьте новый текст в конец файла:

* Git installed on your local computer. The tutorial (https://www.8host.com/blog/razrabotka-proektov-s-otkrytym-isxodnym-kodom-nachalo-raboty-s-git/) walks you through installing Git and covers some background information you may find useful.

Используйте команду git status, чтобы узнать состояние вашего репозитория:

git status

Вы получите вывод:

On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified:   article.md
no changes added to commit (use "git add" and/or "git commit -a")

Как и ожидалось, файл article.md изменился. С помощью git diff вы можете увидеть эти изменения:

git diff article.md

Вы получите такой вывод:

diff --git a/article.md b/article.md
index 77b081c..ef6c301 100644
--- a/article.md
+++ b/article.md
@@ -5,3 +5,7 @@
Version control isn't just for code. It's for anything you want to track, including content. Using Git to manage your next writing project gives you the ability to view multiple drafts at the same time,  see differences between those drafts, and even roll back to a previous version. And if you're comfortable doing so, you can then share your work with others on GitHub or other central git repositories.
In this tutorial you'll use Git to manage a small Markdown document. You'll store an initial version, commit it, make changes, view the difference between those changes, and review the previous version. When you're done, you'll have a workflow you can apply to your own writing projects.
+
+## Prerequisites
+
+* Git installed on your local computer. The tutorial (https://www.8host.com/blog/razrabotka-proektov-s-otkrytym-isxodnym-kodom-nachalo-raboty-s-git/) walks you through installing Git and covers some background information you may find useful.

В выводе есть строки, начинающиеся со знака плюс (+). Это добавленные вами строки. Удаленные строки будут отображаться со знаком минус (-). Строки, которые остались без изменений, будут без каких-либо символов.

Команды git diff и git status позволяют вам узнать, что вы изменили в тексте. Вы также можете сохранить разницу в файл, чтобы просмотреть его позже. Это делается с помощью следующей команды:

git diff article.md > article_diff.diff

Расширение .diff позволит текстовому редактору применить правильную подсветку синтаксиса.

Сохранение изменений в репозитории состоит из двух этапов. Сначала нужно добавить файл article.md еще раз, а затем отправить коммит. Git хочет, чтобы вы явно указывали, какие файлы входят в каждый коммит, поэтому, даже если вы добавили файл ранее, вам придется добавить его снова. Обратите внимание, что вывод команды git status напомнит вам об этом.

Добавьте файл и отправьте коммит с изменениями:

git add article.md
git commit -m "add prerequisites section"

Вы получите:

[master 1fbfc21] add prerequisites section
1 file changed, 4 insertions(+)

Используйте git status, чтобы узнать состояние вашего репозитория. Вы увидите, что делать больше ничего не нужно.

git status
On branch master
nothing to commit, working tree clean

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

Если вы отправляете черновик документа кому-то другому и он вносит в него изменения, возьмите новую копию и замените ею ваш файл. Затем используйте git diff, чтобы увидеть внесенные изменения. Git увидит изменения независимо от их источника: вы можете вносить изменения вручную или скачать файл из интернета или со своей почты.

Теперь давайте рассмотрим управление версиями текста.

4: Управление версиями и изменениями

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

Команда git log показывает историю изменений вашего репозитория. Каждое внесенное вами изменение имеет запись в журнале.

git log
commit 1fbfc2173f3cec0741e0a6b21803fbd0be511bc4
Author: 8host Blog <8host@blog>
Date:   Thu Sep 19 16:35:41 2019 -0500
add prerequisites section
commit 95fed849b0205c49eda994fff91ec03642d59c79
Author: 8host Blog <8host@blog>
Date:   Thu Sep 19 16:32:34 2019 -0500
Add gitignore file and initial version of article

Каждый коммит имеет определенный идентификатор. Этот номер используется для ссылки на данный коммит. Для ссылки вам нужны только первые несколько символов идентификатора. Команда git log —oneline выдает сокращенную версию лога с более короткими идентификаторами:

git log --oneline
1fbfc21 add prerequisites section
95fed84 Add gitignore file and initial version of article

Чтобы просмотреть исходную версию файла, используйте git show и идентификатор коммита. Идентификаторы в вашем репозитории будут отличаться от идентификаторов в наших примерах.

git show 95fed84 article.md

Выходные данные показывают детали коммита, а также изменения, которые внес этот коммит:

commit 95fed849b0205c49eda994fff91ec03642d59c79
Author: 8host Blog <8host@blog>
Date:   Thu Sep 19 16:32:34 2019 -0500
Add gitignore file and initial version of article
diff --git a/article.md b/article.md
new file mode 100644
index 0000000..77b081c
--- /dev/null
+++ b/article.md
@@ -0,0 +1,7 @@
+# How To Use Git to Manage Your Writing Project
+
+### Introduction
+
+Version control isn't just for code. It's for anything you want to track, including content. Using Git to manage your next writing project gives you the ability to view multiple drafts at the same time,  see differences between those drafts, and even roll back to a previous version. And if you're comfortable doing so, you can then share your work with others on GitHub or other central git repositories.
+
+In this tutorial you'll use Git to manage a small Markdown document. You'll store an initial version, commit it, make changes, view the difference between those changes, and review the previous version. When you're done, you'll have a workflow you can apply to your own writing projects.

Чтобы увидеть сам файл, слегка измените команду. Вместо пробела между идентификатором коммита и файлом вставьте символы :./. Вот так:

git show 95fed84:./article.md

Вы увидите содержимое этого файла в заданной редакции:

# How To Use Git to Manage Your Writing Project
### Introduction
Version control isn't just for code. It's for anything you want to track, including content. Using Git to manage your next writing project gives you the ability to view multiple drafts at the same time,  see differences between those drafts, and even roll back to a previous version. And if you're comfortable doing so, you can then share your work with others on GitHub or other central git repositories.
In this tutorial you'll use Git to manage a small Markdown document. You'll store an initial version, commit it, make changes, view the difference between those changes, and review the previous version. When you're done, you'll have a workflow you can apply to your own writing projects.

Вы можете сохранить этот вывод в файл, если он вам нужен:

git show 95fed84:./article.md > old_article.md

По мере того, как вы будете вносить изменения в текст, ваш лог будет расти. Позже вы сможете просматривать все изменения, внесенные в вашу статью с самого начала работы над ней.

Заключение

В этом мануале вы научились использовать локальный репозиторий Git для отслеживания изменений в текстах. Теперь вы можете использовать этот подход для управления вашими статьями, публикациями в блоге или даже текстом целой книги. Если вы отправите свой репозиторий на GitHub, вы можете привлечь других пользователей к работе над текстом.

Tags: