Как работает GIT

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Данная статья:

  • написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
  • это одна из статей из нашего "Самоучителя по Java"

Привет! Это вторая статья из руководства "GIT основы: Курс молодого бойца"  В первой статье мы с Вами поговорили о том, что такое GIT и GitHub. Теперь давайте рассмотрим как работает GIT.

Как работает GIT

Одно из ключевых понятий, которое Вы должны усвоить для успешной работы с GIT - это система трёх основных стадий: working directory, staging area и repository.

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

Так давайте же разберемся что происходит подробнее.

Стадия 1: Working Directory

Working directory переводится как "рабочая папка". По сути это папка на компьютере, за которой GIT "следит".

Чтобы было понятнее, давайте посмотрим на пример. Допустим, Вы создали новый проект Калькулятор, который хотите загрузить на GitHub.

Сначала Вы можете создать папку, например, на рабочем столе, с названием  "Calculator":

Но пока это просто папка (directory), а совсем не GIT working directory (рабочая папка Гит-а). По сути, GIT даже не знает о её существовании.

Но мы можем сделать так, чтобы GIT "заметил" нашу папку - или, скорее, "закинуть" в эту папку GIT. Как это сделать мы рассмотрим позднее - пока что мы просто разбираем как это работает.

Допустим, Вы сделали так, что GIT следит за папкой (написали в консоли "гит следить" :)). Поздравляем - теперь это "рабочая папка"!

Что конкретно происходит, когда GIT начинает "видеть" папку?

Во-первых, все команды GIT по работе с файлами будут работать только в этой папке. Если Вы зайдете в папку "Единороги", которая не является рабочей папкой GIT, и попробуете добавить в GIT файлы оттуда - ничего не получится. Вам придется или скопировать файл из "Единорогов" в "Calculator", или сделать папку "Единорогов" тоже рабочей папкой GIT.

Во-вторых, в такой папке создается скрытая папка .git.  GIT начинает хранить в своей рабочей папке мета данные по Вашему проекту.

Стадия 2: Staging Area

Папка "Calculator" изначально была пустой. Теперь, давайте представим что мы добавили новый файл - file.txt.

Как Вы думаете, что случится?  GIT сразу синхронизирует файл file.txt с облаком, как какой-нибудь DropBox или Google Drive?

К счастью, GIT работает не так. Он не будет обращать внимания на файл, а тем более никуда его не отправит, пока Вы его об этом не попросите. И если Вы все-таки захотите "следить" за изменениями в файле с помощью GIT, и потом отправить его на репозиторий - сначала Вам придется сообщить GITу об этом.

Итак, сначала наш файл лежал в Working Directory:

Потому мы используем команду (наподобие "Гит добавить") - и вот теперь GIT начинает следить за измениями состояния нашего файла. Теперь файл находится в Staging area:

Но что же все-таки такое эта Staging area?

Staging area переводится как "перевалочный пункт".

То-есть это место, где хранится груз, готовый к дальнейшей отправке.

На деле Staging area - это файл, в котором хранится список того, что Вы хотите отправить на удаленный репозиторий (т.е. "показать всему миру" 🙂 ).

В каком-то смысле, наличие Staging Area и такая работа GIT значит, что в Вашей рабочей папке (working directory) может лежать список президентов США, расписание автобусов на октябрь и фотография Вашего кота, но GIT на них не обратит никакого внимания - а значит, не загрузит в Интернеты - пока Вы об этом его не попросите. Конечно, по-хорошему все это там лежать не должно 🙂

Стадия 3: Repository

Итак, мы указали что хотим следить за файлом. Что дальше?

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

Вы поработали, и хотите все эти изменения "один пакетом" закинуть на облако. Вы знаете, что хотите запомнить состояние Ваших файлов именно на этом этапе (если бы GIT запоминал версии файлов staging area при каждом изменении, никакой бы памяти не хватило).

Вы даете команду GIT - "запомни состояние этих файлов". В этот момент GIT делает "снимок" нужных файлов - и они переходят в стадию "repository". Если бы у нас был только один файл - file.txt - схематически мы бы это изобразили так:

Отлично! Теперь у нас есть "снимок" файла (или файлов) на определенный момент времени - и мы сможем к нему вернуться когда нам будет необходимо.

Но и это еще не все...

Если Вы захотите поделиться с миром своим кодом (т.е. закинуть его на удаленный репозиторий), Вам придется сделать еще один шаг уже после комита. Вы грубо говоря пишите "гит отправь" - и если не будет ошибок, Ваши файлы успешно окажутся на каком-нибудь GitHub в подобном виде:

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

Как зарегистрироваться на GitHub читайте вот в этой статье "Как зарегистрироваться на GitHub"

Спасибо, что были с нами! 🙂


Надеемся, что наша статья была Вам полезна.  Можно записаться к нам на курсы по Java на сайте.

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--