Karhin’s Blog
About technologies and life

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

Зачем?

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

Установка

Скорее всего, он уже у вас установлен, но если нет, то откройте сайт git и скачайте для нужной вам операционной системы.

После установки откройте терминал или командную строку.

Создание репозитория

Под страшным словом репозиторий понимают место, где хранятся ваши файлы, которые вы хотите отслеживать. Есть локальные репозитории, которые хранятся у вас на компьютере, а есть удалённые, которые хранятся на сервере. Сейчас создадим локальный, а потом сделаем удаленный, чтобы можно было получить к нему доступ в любой момент. Это бесплатно.

Теперь нужно перейти в папку, которую вы собираетесь отслеживать. Введите команду cd, поставьте пробел и просто перенесите папку из проводника или файндера в терминал, затем нажмите Enter.

Проинциализируйте репозиторий с помощью команды git init. После её вызова в папке появится скрытая папка .git. Готово, репозиторий создали.

Добавление файлов в репозиторий

Для этого достаточно ввести git add [название файла или папки]. Можно добавить все файлы в папке, вместо путей и названий введите точку:

git add .

Чтобы в репозиторий не попадали лишние файлы и всякий мусор, есть специальный файл .gitignore. Игнорируемые файлы и папки перечисляются с новой строки. Обычно этот файл шаблонный.

Например, макос любит создавать скрытые файлы и папки, которые хранят информацию о том, как в файндере должна при открытии отображаться папка (свёрнута/развёрнута, списком, сеткой и так далее). Можно взять готовый шаблон из этого файла.

В этом репозитории от GitHub очень много разных шаблонов. Подберите нужный и скопируйте себе в .gitignore, если лень самим писать.

Первый коммит

Под коммитом понимают фиксацию изменений. Они накладываются друг на друга и содержат информацию про изменения в отслеживаемых файлах, а ещё кто сделал эти изменения и когда.

Введите в терминале git commit -m "Init". Первый коммит в репозитории называют Init, но вы можете вписать в название что угодно. В названии кратко описывают изменения, которые содержатся в коммите. Например, "исправил очепятки в первой главе книги".

Хорошим тоном считается делать небольшие коммиты. Другие люди (и вы сами через месяц или год) смогут более детально видеть историю изменений в файлах.

Удалённый репозиторий

Можно было бы хранить всё локально на своем компьютере, но какой прикол? Создадим удалённый репозиторий, так будет надёжнее и веселее, потому что им можно будет поделиться с кем-то.

Я использую GitLab и GitHub. Регистрация очень простая, не будем на ней останавливаться.

После регистрации найдите кнопку Create Repository или что-то типа такого. Нужно будет дать ему имя и адрес, можно будет выбрать приватным он будет или публичным. Отключите чекбокс "Проинициализировать с README" и создайте пустой репозиторий.

Сразу после создания вы увидите набор команд, которые нужно ввести. Самые важные эти:

git config --global user.name "Christopher Nolan"
git config --global user.email "christopher.nolan@gmail.com"

git remote add origin https://gitlab.com/nolan/tenet-plot.git

Первые две вводятся один раз. Последняя устанавливает адрес вашего удалённого репозитория.

Пушим

Пушить от английского push и названия одноименной команды для отправки изменений. Просто введите в терминале git push. У вас спросит логин и пароль от удалённого репозитория. Если всё хорошо, то обновите веб-страницу с вашим репозиторием, увидите там ваши файлы.

Пуллим

Эта команда нужна для того, чтобы скачать изменения из удалённого репозитория. Введите в терминале git pull. Ничего не должно произойти, потому что изменений и нет.

Попробуйте внести изменения в файлы через сайт, где вы решили держать удалённый репозиторий. Там всё достаточно интуитивно, вас попросят сделать коммит, но вы уже знаете, что это такое. Вызовите команду ещё раз, чтобы произошла магия.

Клонирование репозиториев

В вебе есть кнопки для этого, но это можно сделать и через терминал. Введите в терминале git clone [адрес репозитория], чтобы клонировать удаленный репозиторий себе на компьютер.

Можете наклонировать себе текущий репозиторий в текущий репозиторий, чтобы произошла рекурсия.

Что за ветки?

Ветки - это такая фича в гите, которая позволяет иметь в репозитории независимые истории коммитов с общей базой. Аналогия с ветками деревьев здесь не очень работает, как мне кажется. Больше похоже на ветки метро, которые иногда объединяются. Обычно в репозитории есть базовая ветка master (или main, это отдельный мем).

Схема московского метро демонстрирует две ветки в гите и их слияние

Представим, что вы заканчиваете книгу, написали десять глав и дошли до финала. У вас ещё есть редактор, который перечитывает за вами книгу и иногда вносит правки.

Есть несколько вариантов, как можно было бы её закончить, и может придется где-то исправить даже предыдущие главы, чтобы они подошли под концовку. Можно было бы колхозно создать несколько копий книги и каждую закончить по-своему, а потом дурить себе голову с тем, что редактор прислал еще четвертый документ, который нужно как-то соотнести с тем, что вы там понаписывали во всех трёх других вариантах.

С ветками такой проблемы бы не было. Вы бы создали внутри репозитория три его независимых копий. Коммиты накладывались бы независимо на общую основу, как и правки редактора. Вы бы могли скинуть даже три разных ветки разным людям, чтобы они заценили их и высказали своё мнение. А когда решили, какая версия лучше, слили бы коммиты из этой ветки в основную.

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

Ты знаешь гит, Нео

В обычной жизни реально используется только 6 команд: init, clone, add, commit, push, pull.

Есть ещё патчи, релизы, теги, разные виды откатов на предыдущие коммиты и так далее, но всё это легко запоминается и гуглится. Чаще гуглится, вводится и забывается на год, пока ещё раз не пригодится. Над этим угорают только программисты.

После того, как разобрались с консольным гитом, установите какой-нибудь текстовый редактор с поддержкой гита (например Visual Studio Code) или отдельное приложение только для него. В нём будет удобнее добавлять отслеживаемые файлы и просматривать историю коммитов.

Гит не идеален и в нём возникают конфликты. Например, вы изменили с разных устройств один и тот же файл в одном месте, сделали разные коммиты и решили слить всё это в один репозиторий. Конфликты удобнее разрешать через полноценный редактор с поддержкой Git.

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

Digital Git Гайд

To post a comment, please log in or create an account.

Sign In

DALL-E: я снова верю в технологии
DALL-E: я снова верю в технологии

Попробовал новую систему для превращения текста в картинки. Показываю, что получилось.

1784
Первый iPhone
Первый iPhone

Возле первого айфона часто вижу приписки «Революционный», «Прорывной» и так далее. У меня совсем другое мнение по этому поводу.

1822
Криптография на пальцах
Криптография на пальцах

Сквозное шифрование, менеджеры паролей, хеши, секретные чаты в телеграме. Если у вас возникало чувство, что вы уже ничего не понимаете, то сейчас попытаюсь объяснить основы криптографии на пальцах.

2491
Красивый Email за десять минут
Красивый Email за десять минут

Собственный домен для почты – это не привилегия бизнеса или программистов. Сделать его проще простого, но нужно потратить десять минут.

4821