Страницы

12 июля 2013 г.

Все, что вы хотели узнать про Git, но боялись спросить. Часть 1. Init & commit

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

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

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

Итак, приступим.

Чтобы работать с Git репозиторием, надо его сперва инициализировать. Создадим пустую папку и переключимся в нее.
Далее, выполним команду git init для инициализации репозитория в текущей папке.



Как видим, команда выполнилась успешно, и у меня даже показывается текущая ветка (о них мы поговорим чуть позже). Это преимущества плагина posh-git, строго рекомендую пользователям Windows.

Что же произошло? При выполнении команды git init в текущей папке создается скрытая папка .git, которая содержит информацию о репозитории. К ее содержимому вернемся позже, а пока давайте добавим уже что-то в наш проект. Я, например, создал файл parser.rb








Теперь git status покажет нам текущее состояние рабочей области.








Эта команда показывает изменения в рабочей папке относительно последнего коммита, в нашем случае это пустая директория. Кроме того, мы видим, что файл parser.rb отображается как Untracked. Что же это значит? Давайте рассмотрим структуру проекта Git.


 Repository (Репозиторий) - место, где Git хранит метаданные и базу данных объектов проекта. Грубо говоря, тут хранится вся история изменений. Находится в папке .git


Staging area - небольшой файл, который хранит информацию о том, что должно войти в следующий коммит. Иногда его также называют индексом. Находится в папке .git



Working directory - все содержимое проекта, кроме папки .git. С точки зрения Git, это всего лишь "снимок" одной из версий проекта. Изменения, которые вы вносите, отражаются в первую очередь тут.

Статус Untracked показывает, что в репозитории нет записей об этом файле, и, соответственно, Git распознает его как новый для данного проекта. Чтобы внести файл в проект, нужно выполнить две операции. Сейчас изменения присутствуют только в рабочей области, и нам надо добавить их в Staging area, а затем и в репозиторий.

Выполним команду git add . (не забудьте точку, она значит, что мы применяем команду для всех измененных файлов), и затем git status








Мы видим, что файл parser.rb отображается как to be commited. Следовательно, нам успешно удалось добавить его в Staging area
После выполнения git add .
До выполнения git add .
Теперь, нам нужно добавить этот файл в репозиторий. Для этого служит команда git commit. Выполним ее с дополнительным параметром -m "Adds parser.rb" который определяет commit message, коментарий к коммиту.
Коммит создан успешно, посмотрим, что покажет git status
Working directory clean - все изменения сохранены, рабочая область совпадает с текущей версией репозитория. На нашей схеме это будет выглядеть вот так:

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

Использованные команды Git
  • git init - инициализация репозитория. (?)
  • git status - просмотр текущего состояния проекта. (?)
  • git add - добавление файлов из рабочей директории в staging area. (?)
  • git commit - создание коммита, добавление изменений из staging area в репозиторий. (?)

Кстати, git help %commandName% открывает справку по команде с именем %commandName%.

Комментариев нет:

Отправить комментарий