04 - Основы Git
Выбранные функции Git
В этом кратком введении в Git используется командная строка, чтобы проиллюстрировать некоторые ее возможности. Если вы хотите опробовать ее, скачайте и установите Git на свой ноутбук или рабочую станцию: git-scm.com .
Репозитории
Репозиторий - это место, где хранятся все изменения в проекте. В простейшем случае это папка с именем .git в той же папке, что и исходные файлы проекта. Чтобы начать, создайте пустую папку, сделайте ее текущим каталогом с cd
а затем попробуйте выполнить эту команду:
git init .
что должно привести к подтверждению того, что пустой репозиторий Git был создан в скрытой папке с именем .git (папки, начинающиеся с точки (.), обычно не включаются в списки, поэтому вы их не видите, следовательно, скрыты).
Вы также можете использовать удаленный репозиторий на другом компьютере, куда входит GitHub. Об этом будет рассказано в отдельных статьях.
Создайте некоторый контент с помощью текстового редактора и сохраните его в исходной папке, содержащей репозиторий .git (слово repo часто используется как сокращенная форма репозитория). В этой статье этот документ markdown, точно названный git.md, используется в качестве примера документа. Подтвердите то, что у вас есть, с помощью команды list:
ls -al total 8 drwxr-xr-x 4 ceford staff 128 26 Aug 07:02 . drwxr-xr-x+ 99 ceford staff 3168 26 Aug 06:31 .. drwxr-xr-x 9 ceford staff 288 26 Aug 07:02 .git -rw-r--r-- 1 ceford staff 1689 26 Aug 07:10 git.md
Вы можете просмотреть содержимое папки .git, если хотите, но, как правило, вам не следует вносить в нее какие-либо изменения самостоятельно. Позвольте командам git выполнить всю работу. Вы можете удалить папку .git, если хотите, не затрагивая исходный текст, но вы потеряете всю историю изменений.
Постановка
Следующим шагом будет выдача команды для добавления исходного файла в индекс файлов, которые отслеживает git:
git add git.md
Ответа на эту команду нет - git просто делает это.
Совершить
Команда commit сообщает git записать все изменения, внесенные в исходные файлы на данный момент:
git commit -m "Text entered as far as Commit"
На что следует ответить:
[master (root-commit) 913815c] Text entered as far as Commit 1 file changed, 45 insertions(+) create mode 100644 git.md
Это странное число, 913815c, является идентификатором фиксации, который позволяет git отслеживать этот конкретный момент в истории. Текст в кавычках представляет собой сообщение о фиксации - это должно быть краткое информативное описание изменений, внесенных в эту фиксацию.
Филиал
Предположим, вы хотите опробовать новую функцию, но не уверены, будете ли вы ее использовать. Или вы работаете над совместным проектом и хотите изменить что-то, внесенное другими участниками. Здесь на помощь приходит ветвление. Вы создаете ветку своего репозитория, оформляете ее, вносите изменения, а затем решаете, что делать. Попробуйте это:
git branch --list * master
Команда list указывает, что в этом репозитории есть только одна ветвь с именем master. Попробуйте выполнить эти команды:
git branch myfix git checkout myfix git branch --list master * myfix
Список показывает, что теперь есть две ветви, а * указывает, что ветвь myfix извлечена как текущая ветвь. Теперь я могу продолжить и внести изменения в ветку myfix, не затрагивая существующее содержимое главной ветки. Если я решу использовать изменения, мне нужно зафиксировать их, а затем либо объединить ветку myfix с моей главной веткой, либо попросить моего сотрудника объединить мою ветку myfix со своей главной веткой.
Когда работа с веткой будет завершена в результате объединения или отказа от нее, ее можно будет удалить.
Полная документация
В Git есть еще много команд и опций. В основном вам не нужно их знать, потому что ваша IDE обрабатывает их за вас с помощью пунктов меню. Если вы хотите посмотреть, что делает пункт меню, попробуйте этот источник:
Если вы экспериментировали, помните, что вы можете удалить репозиторий (.git), и у вас останутся исходные файлы такими, какими вы их видите в своем редакторе.
Использование IDE
И последнее замечание: выбранная вами IDE не будет помещать какой-либо специфичный для IDE контент в ваше репозиторий git. Отсюда следует, что вы можете изменить свою IDE и ожидать, что она будет одинаково хорошо работать с вашим существующим репозиторием.