База по работе с Git и репозиториями
Статья о том, как пользоваться git на необходимом для разработчика базовом уровне. Создание репозиториев, их клонирование, стягивание изменений, их фиксирование и отправка.
В моём телеграм можно найти шпаргалку по git.
Введение в Git
Git – это система контроля версий. Она помогает вам сохранять изменения, возвращаться к старым версиям кода и внедрять новые фичи в отдельных ветках.
Для начала нужно разобраться, какова структура git. Тут пока без кода, просто на пальцах.
Git в основном состоит из слепков (commit
) и веток (branch
).
Слепок – это шаг вашего кода, который вы сохранили. Как в видеоигре. При нажатии на кнопку “сохранить”, вы можете ввести название и записать сохранение. Только в git еще можно выбрать – сохраним мы всё целиком или только какие-то части.
Ветка – это версия вашего кода. В аналогии с играми – это версия игры на другом устройстве.
Например, вы играете в одну и ту же игру на ПК1 и ПК2. Начинаете на ПК1, а потом копируете папку с сохранениями на ПК2 и продолжаете играть там. Потом обратно перемещаете папку на ПК1 и снова продолжаете играть. Так и работают ветки – в них вы играете в свою “игру” по-разному основываясь на предидущих сохранениях или начиная всё с нуля.
Установка Git
В каждой операционной системе Git устанавливается по-разному
Ubuntu
Для Ubuntu мы используем простую команду:
sudo apt install git-all
Windows
Для windows используем ссылку и скачиваем установщик. Далее со всем соглашаемся и на всё подписываемся 😉.
MacOS
Для MacOs используем терминал:
#Если установлен Homebrew
brew install git
#Если нет, то вводим эту команду.
git --version
#После этого появится окно, где предложит установить Command Line Tools (CLT).
#Соглашаемся и ждем установки. Вместе с CLT установиться и git
Установка CLT – процесс довольно длительный и займёт довольно много памяти, будьте к этому готовы.
Больше информации по ссылкe с офф. сайта.
Основные команды Git
Итак, после установки нам станут доступны команды.
Первая и самая главная – это инициализация:
git init
Так мы создаём репозиторий внутри папки. Все файлы и папки внутри неё начинают отслеживать свои изменения.
Далее, чтобы запомнить эти изменения – нам нужно сделать две вещи:
- Добавить необходимые файлы в коммит
- Сохранить коммит
Для добавления файлов используется команда git add
:
#добавить все файлы
git add .
#Добавление в индекс одного файла:
git add file_name
#Добавление в индекс нескольких файлов
git add file_name_1 file_name_2 file_name_3
Для создания коммита используйте команду git commit
:
git commit -m "быстрый коммит"
-m
– этот флаг нужен для того чтобы описание уместить в одно предложение, если его не указать, откроется редактор текста для длинного описания. А так мы все пишем просто в кавычках – и готово.
Тут мы создали своё сохранение – а теперь мы попробуем сделать “копию игры” – ветку.
Чтобы создать ветку, используйте команду:
git branch new
Обратите внимание – команда не будет выполнена, если вы еще не делали ни одного commit-а. Потому что основная ветка будет создана только после первого commit-а.
Эта команда создания ветки, но, после ее выполнения, мы все еще будем в старой ветке (по умолчанию main). Чтобы перейти в новую ветку, используйте команду:
git checkout new
Можно также посмотреть все ветки:
git branch
И символом *
будет помечена ветка, в которой вы находитесь сейчас:
Также есть возможность сразу создать ветку и перейти в неё:
git checkout -b feature
Работа с хостингами репозиториев
Чтобы перемещать репозитории с кодом между своими компьютерами или делиться с коллегами – нужен хостинг. Их существует довольно много и можно даже создать свой (на основе GitLab), но обычно используют GitHub / GitLab / Bitbucket.
Однако, в связи со сложившейся ситуацией, я буду показывать все на отечественном примере GitVerse. Об этом хостинге у меня есть статья, тут коротко повторю основные тезисы.
Основная задача – это связать ваш локальный репозиторий с репозиторием на хостинге. Для этого используется команда:
git remote add origin https://gitverse.ru/mihailgok/test.git
Далее мы делаем основную ветку – master:
git branch -M master
Затем делаем пуш – это команда отправляет изменения на хостинг.
git push -u origin master
Готово – после внесения любых изменений нам нужно будет выполнять последовательность команд:
git add .
git commit -m "description"
git push
Если же вы создали новую ветку – ее тоже нужно отправить на хостинг. Для этого есть команда:
git push origin <branch>
Слияние
Основы слияния
Основные шаги при слиянии:
1. Выбор целевой ветки – сначала нужно выбрать ту ветку, куда вы хотите внести изменения из другой ветки. Обычно это основной рабочий поток разработки, например, main или master.
2. Переключение на целевую ветку – перед тем как начать слияние, убедитесь, что находитесь именно в той ветке, куда планируете добавить изменения. Для этого выполните команду:
git checkout main
3. Запуск команды слияния – теперь можно запустить команду для слияния выбранной ветки с текущей. Например, чтобы слить ветку feature с main, выполните следующую команду:
git merge feature
Решение конфликтов
В этом процессе могут возникнуть конфликты – это когда вы изменили одну и ту же строку в разных ветках и они наслоились друг на друга.
Приведу пример:
Допустим, в ветке main
имеем файл index.js с кодом:
А в ветке new
имеем:
Тогда при команде
git merge new
Мы получим в ветке main ситуацию:
Это и есть конфликт – две строки с разным содержимым при слитии в одну ветку его вызовут (git решает часть таких конфликтов самостоятельно, но далеко не все). Тут вам нужно просто выбрать правильный вариант (стереть все лишнее), затем сделать также стандартные add и commit – и готово.
Возврат к коммиту
Бывает такое, что стёрли что-то важное или добавили что-то и теперь код не работает. Тогда мы возвращаемся к более старому сохранению. Для этого нужно посмотреть их все – используем команду:
git log
Получим такой результат:
Чтобы посмотреть код определённого коммита – используем команду:
git checkout <commit_hash>
Также можно жестко вернуться к коммиту:
git reset --hard <commit_hash>
Эта команда сбросит вашу текущую ветку к указанному коммиту, а также очистит рабочее дерево и индекс от всех изменений, сделанных после этого коммита.
git reset --soft <commit_hash>
Эта команда оставит ваши изменения в рабочем дереве, позволяя вам их пересохранить.
Вывод
В этой статье я разобрал базовые команды, необходимые разработчику для работы с git. На самом деле это инструмент очень большой и не даром у него есть большая документация.
Пишите в комментариях, что я важного мог пропустить или о чём еще стоит рассказать 😉
Успехов 🤟