Что такое GIT
GIT - распределенная система контроля версий. Она позволяет разработчику сохранять различные состояния проекта и управлять ими. GIT страхует разработчика от потери данных, а также создает удобные условия для разработки в команде.
Данный урок позволит разобраться с азами GIT и по практиковаться на небольшом html-проекте.
1. Подготовка
Для начала, необходимо скачать и установить GIT. Как только установили, открываем GIT BASH (с подсветкой текста) и вводим следующие команды:
Установка имени и электронной почты
Выполняем:
git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"
Установка параметров окончания строк
Выполняем:
git config --global core.autocrlf input
git config --global core.safecrlf true
Установка отображения unicode
По умолчанию, git будет печатать не-ASCII символов в именах файлов в виде восьмеричных последовательностей \nnn
. Что бы избежать нечитаемых строк, установите соответствующий флаг.
Выполняем:
git config --global core.quotepath off
Качаем и устанавливаем заготовку
Пакет учебных материалов должен иметь главную папку «git_tutorial» с двумя подпапками:
- work — пустой рабочий каталог. Здесь будут лежать ваши репозитории.
- files — заранее упакованные файлы для того, чтобы вы могли продолжить работать с учебными материалами на любом этапе. Если вы застрянете, просто скопируйте нужный урок в свою рабочую папку.
2. Создание проекта
Создаем файл для работы
Открываем пустой каталог Work. Далее с помощью GIT созданем пустой каталог с именем «hello», затем входим в него и создаем там файл с именем «hello.html», далее руками добавляем в файл «Hello, World».
Выполняем:
mkdir hello
cd hello
touch hello.html
Создаем репозиторий
Теперь у нас есть каталог с одним файлом. Чтобы создать git репозиторий из этого каталога, выполняем команду git init.
Выполняем:
git init
Результат:
$ git init
Initialized empty Git repository in /Users/alex/Documents/Presentations/githowto/auto/hello/.git/
Добавляем страницу в репозиторий
Выполняем:
git add hello.html
git commit -m "First Commit"
Результат:
$ git add hello.html
$ git commit -m "First Commit"
[master (root-commit) 911e8c9] First Commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 hello.html
3. Проверка состояния
Проверяем состояние
Используйте команду git status
, чтобы проверить текущее состояние репозитория.
Выполняем:
git status
Результат:
$ git status
# On branch master
nothing to commit (working directory clean)
Команда проверки состояния сообщит, что коммитить нечего. Это означает, что в репозитории хранится текущее состояние рабочего каталога, и нет никаких изменений, ожидающих записи.
Мы будем использовать команду git status
, чтобы продолжать отслеживать состояние репозитория и рабочего каталога.
4. Внесение изменений
Вносим изменения
Добавим кое-какие HTML-теги к нашему приветствию. Изменяем содержимое файла на:
<h1>Hello, World!</h1>
Проверяем состояние
Выполняем:
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: hello.html
#
no changes added to commit (use "git add" and/or "git commit -a")
Первое, что нужно заметить, это то, что git знает, что файл hello.html
был изменен, но при этом эти изменения еще не зафиксированы в репозитории.
Также обращаем внимание на то, что сообщение о состоянии дает подсказку о том, что нужно делать дальше. Если мы хотим добавить эти изменения в репозиторий то используем команду git add
. В противном случае используем команду git сheckout
для отмены изменений.
5. Индексация изменений
Добавляем изменения
Делаем так, чтобы git проиндексировал изменения.
Выполняем:
git add hello.html
git status
Результат:
$ git add hello.html
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: hello.html
Изменения файла hello.html
были проиндексированы. Это означает, что git теперь знает об изменении, но изменение пока не перманентно (читай, навсегда) записано в репозиторий. Следующий коммит будет включать в себя проиндексированные изменения.
Если мы вдруг решили, что не хотим коммитить изменения то с помощью команды git reset
можно снять индексацию этих изменений.
6. Индексация и коммит
Отдельный шаг индексации в git позволяит продолжать вносить изменения в рабочий каталог, а затем, в момент, когда мы захотим взаимодействовать с версионным контролем, git позволит записать изменения в малых коммитах, которые фиксируют то, что мы сделали.
Предположим, что мы отредактировали три файла (a.html
, b.html
, и c.html
). Теперь мы хотим закоммитить все изменения, при этом чтобы изменения в a.html
и b.html
были одним коммитом, в то время как изменения в c.html
логически не связаны с первыми двумя файлами и должны идти отдельным коммитом.
В теории, можно сделать следующее:
Выполняем:
git add a.html
git add b.html
git commit -m "Changes for a and b"
git add c.html
git commit -m "Unrelated change to c"
Разделяя индексацию и коммит можно с легкостью настроить, что идет в какой коммит.