Добро пожаловать в интерактивный гит туториал. Здесь мы рассмотрим основные элементы работы в гит, что будут вам нужны на любом этапе работы с гит. Перед началом прохождения курса убедитесь что у вас на устройстве имеется "bash" или аналогичный "shell" терминал, а также установлен "git". Для пользователей Windows наиболее простым вариантом будет установить Git Bash
Для изучения представленного материала не рекомендуется использовать веб-интерфейс гит репозитория, потому-что для получения полной информации необходимо будет использовать систему контроля версий, веток и тегов гита
ls путь - (list) отобразить файлы присутствующие по указанному пути
cd путь - (change directory) сменить текущую директорию на указанный путь
rm путь_к_файлу - (remove) удаляет файл находящийся по указанному пути
cp путь_к_файлу целевой_путь - (copy) копирует указанный файл в целевую директорию
mkdir название_папки - (make directory) создает директорию с указанным названием
git команда ... - исполняет команду адресованную утилите "гит"
Самым первым делом для начала работы, нам необходимо получить репозиторий в котором мы будем работать. Сделать это можно двумя способами, создать пустой или подключиться к уже существующему.
Чтобы создать пустой репозиторий на локальном устройстве можно использовать команду
git init название_папки
Обратите внимание, что эта команда лишь создаст у вас на устройстве пустой репозиторий с единственной веткой, названной "master". Создание гит репозитория через веб интерфейс предпочитаемого гит "сервиса" автоматически создаст репозиторий на сервере, но веткой создаваемой через веб-интерфейс вероятнее всего будет "main" из-за того что используемую комбинацию "master-slave" начали считать неполиткорректной
Для использования уже существующего репозитория или репозитория что вы создали через веб-интерфейс, можно воспользоваться командой "git clone"
git clone адрес_репозитория
Получить адрес репозитория можно скопировав URL ссылку в вашем браузере или воспользоваться кнопкой клонирования в веб-интерфейсе вашего гит-сервиса
Также вы можете заранее выбрать какую ветку репозитория вы хотите клонировать, для этого добавьте флаг "--branch=название_ветки"
git clone --branch=название_ветки адрес_репозитория
С использованием команды "git clone" гит автоматически применит все нужные настройки для вашего гит репозитория, но вы также можете вручную задать необходимые настройки для того чтобы иметь возможность загрузить свой локальный гит репозиторий на удаленный сервер гит или подключить существующий локальный репозиторий для работы с существующим удаленным репозиторием
git remote add origin адрес_репозитория
Скачайте этот репозиторий одним из методов описанных выше для дальнейшего прохождения туториала
После того как вы подключились к удаленному репозиторию, используйте команду
git pull
Для получения всех последних изменений загруженных в удаленный репозиторий
Также проверяйте логи изменений для получения общего представления о изменениях произошедших в репозитории с обновлениями что вы получили
git log
git log --oneline
Флаг "--oneline" позволяет представить все предыдущие коммиты в более компактной форме
Коммит (англ. "commit" - образовано от глагола "to commit" совершать, фиксировать) - это своеобразный указатель на страницу истории в индексе. Из-за особенности работы гит, все изменения вносимые в гит репозитории последовательны. Каждое изменение произошедшее в репозитории записывается в условую "страницу" журнала, которые в дальнейшем складываются в хронологическом порядке образуя итоговую версию репозитория. Это может показаться неудобным, ведь в начале работы с гит могут случаться ситуации, когда вы захотите отменить какой-то из своих коммитов, но именно эта особенность делает гит мощным инструментом контроля версий. В случае с грамотно организованным гит репозиторием, история изменений и комментарии позволят сократить или даже упразднить необходимость в документации.
Чтобы просмотреть конкретные изменения произошедшие в коммите, можно воспользоваться командой
git show коммит имя_файла
В коммите можно посмотреть информацию об изменениях в файлах произошедших в коммите, дату, время и автора изменений
Обращаться к коммиту можно по его хешу (набор из 7 или 40 букв и цифр возле комментария коммита), полученному из логов или по алиасу "HEAD~n" где "n" это номер коммита начиная с самого нового, к которому вы хотите обратиться. Если не указывать "коммит", то гит автоматически покажет вам информацию касающуюся коммита на котором вы находитесь в данный момент, если не заполнять "имя_файла", что вы хотите просмотреть, то гит покажет изменения произошедшие во всем репозитории
Также можно посмотреть все изменения произошедшие с определенного коммита
git diff коммит имя_файла
Самая важная часть гита это ветвление и контроль версий. В прошлом пункте мы уже затрагивали тему логов и коммитов, благодаря этому, мы можем без проблем вернуться на предыдущие изменения и восстановить данные что были в репозитории ранее.
Чтобы сбросить изменения внесенные в файлы индексируемые гитом используйте команду
git restore имя_файла
Использование символа "." вместо "имя_файла" сбросит изменения во всех файлах текущей папки рекурсивно (т.е. во всех подпапках в том числе)
Если кажется что текущая версия проекта какая-то забагованная, раньше было лучше, да и вообще трава была зеленее, можно локально откатиться на более старую версию при помощи команды
git reset коммит
Но это может не удасться, если вы вносили изменения в файлы отслеживаемые гитом. Для решения этой проблемы сбросьте ваши изменения через "git restore ." и повторите попытку заново, или воспользуйтесь флагом "--hard" чтобы заставить гит перейти на версию игнорируя большую часть предупреждений. В этом случае, все файлы изменятся на то состояние, в котором они были на момент выбранного коммита
Если же вы не хотите удалять ваши изменения, вы можете "закоммитить их" или собрать их во временное хранилище воспользовавшись командой
git stash
Впоследствие, когда вы вернетесь обратно можете вернуть изменения при помощи аргумента "apply" той же самой команды. Просмотреть список всех ваших "стешей" вы можете используя аргумент "list", а удалить одно из временных хранилищ при помощи аргумента "drop" с указанием конкретного "стеша"
Когда вы уверены в том что ваши изменения достойны того, чтобы находиться в удаленном репозитории, нужно их добавить в коммит и загрузить на сервер
Чтобы посмотреть список файлов измененных с последнего коммита, воспользуйтесь командой
git status
Информация в этом меню может быть разделена на 3 основные части: файлы добавленные в очередь на коммит; файлы которые гит отслеживает и имеют изменения, но ещё не добавлены в очередь на коммит; файлы которые гит не отслеживает и не игнорирует. В самом верху этого меню также можно увидеть название ветки в которой вы находитесь
Также настоятельно рекомендуется перепроверить изменения что вы внесли в проект при помощи команды
git diff HEAD имя_файла
Когда вы перепроверили всё ещё раз, можно добавлять файлы с изменениями в очередь на коммит. Все файлы что вы добавите в очередь, будут хранить последние изменения в одном коммите, потому советую разбивать обширные изменения на несколько более мелких тематических коммитов, чтобы в дальнейшем было удобнее просматривать коммиты, в которых все изменения не намешаны в одну большую "кучу"
Чтобы добавить изменения в файлах в очередь на коммит, воспользуйтесь коммандой
git add имя_файла
Обратите внимание, что файлы добавленные в очередь на коммит не покажут изменения без использования аргумента "HEAD" потому что они добавляются в отдельный временный индекс
Как уже было сказано, добавление файлов в очередь на коммит добавляет их во временный индекс, потому, все дополнительные изменения будут отображаться отдельно в окне статуса и их нужно будет добавлять в очередь отдельно. Также можете использовать этот индекс как своего рода "чекпоинт" во время работы
Далее необходимо сохранить все изменения добавленные в очередь в коммит, пишите осмысленный "комментарий" чтобы спустя большое количество времени вы и ваши товарищи могли легко понять для чего были внесены изменения и какого рода изменения там произошли
git commit -m "комментарий"
После этого вы можете продолжать работать, не переживая за то, что ваша работа может испариться в любой момент или загрузить её в подключенный репозиторий
git push origin название_ветки
Далее можно перейти к принципам ветвления, для этого перейдите на коммит который называется "Ветвление"
Для рассмотрения этой темы перейдите в ветку "cultureOfGit"