GIT#

Git - это система контроля версий, выполняющая хранение данных в виде набора снимков (snapshots). Каждый раз, когда программист выполняет фиксацию изменений (коммит, commit), то есть сохраняет состояние своего проекта в Git, система запоминает, как выглядит каждый файл в этот момент, и сохраняет ссылку на этот снимок. Для увеличения эффективности, если файлы не были изменены, Git не запоминает эти файлы вновь, а только создаёт ссылку на предыдущую версию идентичного файла, который уже сохранён.

asda

Целостность Git#

В Git для всего вычисляется хеш-сумма, и только потом происходит сохранение. В дальнейшем обращение к сохранённым объектам происходит по этой хеш-сумме. Это значит, что невозможно изменить содержимое файла или каталога так, чтобы Git не узнал об этом. Данная функциональность встроена в Git на низком уровне и является неотъемлемой частью его философии. Информация не будет потеряна во время её передачи и не будет получен повреждённый файл без ведома Git.

Механизм, которым пользуется Git при вычислении хеш-сумм, называется SHA-1 хеш. Это строка длиной в 40 шестнадцатеричных символов (0-9 и a-f), она вычисляется на основе содержимого файла или структуры каталога.

SHA-1 хеш выглядит примерно так:

24b9da6552252987aa493b52f8696cd6d3b00373

Git сохраняет все объекты в свою базу данных не по имени, а по хеш-сумме содержимого объекта. Git только добавляет новые данные в базу Git.

Состояния git#

У Git есть три основных состояния, в которых могут находиться файлы:

  • изменён (modified),

  • индексирован (staged),

  • зафиксирован (committed)

К изменённым относятся файлы, которые поменялись, но ещё не были зафиксированы.

Индексированный — это изменённый файл в его текущей версии, отмеченный для включения в следующий коммит.

Зафиксированный значит, что файл уже сохранён в вашей локальной базе.

Каталог Git — это то место, где Git хранит метаданные и базу объектов вашего проекта.

Это самая важная часть Git и это та часть, которая копируется при клонировании репозитория с другого компьютера.

Базовый подход в работе с Git выглядит так:

  • Изменение файлов рабочей копии.

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

добавляя тем самым снимки только этих изменений в индекс.

  • Выполнение коммита (фиксация) - этот снимок сохраняется в каталог Git.

Репозиторий#

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

Репозиторий может иметь одного владельца или несколько.

Репозиторий может быть локальным ― храниться на компьютере пользователя. А может быть удалённым — лежать на сервере или в облачном хранилище. В таком случае пользователи со своих устройств подключаются к этому репозиторию через интернет.

GitHub#

Git — это просто программа, которую нужно установить и подключить к своему проекту. Можно установить её на сервер и настроить удалённую работу самостоятельно. А можно воспользоваться уже готовыми сервисами. Самый популярный из них — GitHub.

GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.

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

Другими словами, GitHub — это сайт-хранилище. Нужно сначала установить Git, потом зарегистрироваться на GitHub, создать там онлайн-репозиторий — и перенести туда файлы из своего репозитория. Можно настроить автоматический перенос и многие другие функции, которые позволят работать с кодом совместно.

На GitHub можно создавать публичные или открытые проекты — это позволяет знакомить со своим кодом других людей. А можно приватные или закрытые, доступные только тем, кто работает над кодом.