Что такое GIT?

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

GIT - система контроля версий. Эта штука позволяет фиксировать состоянии кода (комитить) и возвращаться к нему когда вздумается.

Т.е. вы сделали изменение в коде, например собака стала кошкой и вы делаете соответствующий комит с название “dog now cat”. Спустя полгода вас спрашивают почему собака стала кошкой и вы даете ссылку на этот комит.

На деле гит делает скрытый каталог .git в вашем проекте. В этом каталоге хранятся метаданные гита, как раз они и позволяют нам возвращаться к определенному состоянию.

ЗАПОМНИТЕ: GIT запоминает ВСЁ, никогда не храните пароли и другие секреты в гите!

И никогда не храните в гите бинарные данные (exe, архивы и т.п.) потому что гит не сможет понять какую строку вы там поменяли и будет дублировать эти бинарные данные, от чего ваш репозиторий будет расти в геометрической прогрессии.

Основные команды:

- git add . # Добавит все измененные файлы текущего каталога в коммит
- git commit -m "my commit" # создаст коммит с именем "my commit"
- git push # Отправит ваш коммит на удаленный сервер гит
- git remote show origin # Покажет адрес удаленного сервера гит

Что такое GitHub и GitLab?

Это “гит сервера" с веб интерфейсом

Т.е. вы можете зайти на гитхаб, нажать там создать репозиторий, сделать git clone себе

В таком режиме работы (и он для нас является по умолчанию) у вас есть 1 центральный репо в гитхабе. Новые работники могут сделать git clone этого репозитория себе на машину и получить все ваши исходники.

При работе с удаленным репо, по мимо git commit необходимо делать git push, чтобы ваши локальные изменения попали на сервер. Если вы работает с другим человеком, то ему нужно будет делать git pull, для того, чтобы получить ваши изменения.

НО! Сделать удаленный репозиторий можно и без гитхаба или гитлаба. На самом деле эти инструменты предоставляют нам еще и CI/CD для нашего кода.

Мы будем в приоритете использовать GitLab и его CI/CD.