Git является системой контроля версий (сокр. квс от англ. control version system) и использется для работы с файлами на вашем компьютере фукнции гит
- Сохранение файлов в системе
- Сохранение истории изменения файлов
- Возможность вернуться к предыдущей версии файла
Но что же делать если мы хотим отправить наш проект кому-то, на другое устройство или работать с кем-то над этим проектом, для этого нам бы понадобилось поднимать облачное хранилище и возможно настраивать сайт для доступа к нему, это бы заняло огромное колличество времени и ресурсов. К счастью вы не первый, кто хочет поделиться своим проектом, поэтому уже есть несколько сервисов, которые помогут вам реализовать это.
Список основных сервисов:
- GitHub - одно из самых известных сообществ для разработчиков от Microsoft, удобен и бесплатен
- GitLab - основная альтернатива GitHub для тех кто негативно относится к Microsoft, оссобеность данного продукта его открытый код и особый подход, он создает сервер для вашего репозитария, как бы хостинг, и вы им пользуетесь
- BitBucket - сервис похожий на гит, созданный Atlassian, вследствие более легко интегрируется с другими проектами этой копании, например, Jira. Данный сервис имеет бесплатное решение для команд до 5 человек, и сниженую стоимость для продуктов для более больших команд по сравнению с другими сервисами. согласно википедии в данном руководстве мы будем работать с GitHub
Итак, для начала нам нужно будет создать 2 репозитория, один локальный, то есть на вашем пк, а второй глабальный, то есть на облаке, ваш репозитарий может быть не пустым, далее мы будем отправлять версии локального репозитория в облако.
Лучше всего завести отдельную папку для каждого проекта и не создавать репозиторий в корневой и дочерних папках, в избежание проблем, если у вас что-то неправильно работает скорее всего дело в этом.
- Скачиваем и устанавливаем Git c официального сайта
- С помощью встроенного терминала вашего пк или с помощью GitBash создаем и переходим в папку вашего проекта
cd FolderForProjects
mkdir MyProject
cd MyProject- Создаем локальный репозиторий в данной папке
git init- Создадим пару файлов для проверки
touch myfile.txt
mkdir images- Добавим их в отслеживаемые файлы для Git
bashgit add myfile.txt images
или
```bash
git add --all
``` (от англ. add, «добавить» + all, «всё») — подготовь к коммиту сразу все файлы, в которых были изменения, и все новые файлы.
или
```bash
git add .
``` подготовить к коммиту текущую папку и все файлы в ней.
6. Сделаем "Фото" текущего состояния, версию для Git
```bash
git commit -m"Init commit"
Теперь у нас есть локальный репозиторий с 1 версией, коммитом
Есть несколько способов отправки в облако для GitHub их 3:
- ssh - наиболее защищеный
- https - хорошая защита и удобство
- GitHub CLI - скорее всего работает как https однако использует внутренюю систему навигации
в данном гайде мы будем использовать https
- Регистрация и создание репозитория в GitHub с помощью интерфейса
- копируем URL на репозиторий, но в концу в следующем шаге нужно добавить ".git", например, https://github.com/MyName/MyProjectName -> https://github.com/MyName/MyProjectName.git
- связываем Git и GitHub
git remote add origin https://github.com/MyName/MyProjectName.git- Проверим, что репозитории действительно связались
git remote -v-v (от англ. verbose, «подробный»)
- Теперь нужно отправить изменения из локального в глобальный репозиторий
git push -u origin main
параметр -u нужен только в первый раз далее можно просто git push
Теперь повторим все это на для новых изменений
- Вы вносите изменения в файлы или создаёте новые
touch newfile.txt- Добавляем изменения в Git или файлы для отслеживания
git add newfile.txttтакже можно использовать "git add ." это автоматически добавит все файлы в текущей папке
- Создаём новую версию
git commit -m"New file newfile.txt"- Отправляем её на сервер
git pushGit, как вы знаете, используется не только для хранения и отправки данных на сервер, в нём также можно просматривать те самые данные, изучать их, смотреть изменения, и возвращаться к ним. Итак начнем с просмотра истории вашего репозитория, для этого понадобится команда git log, введя которую вы сможете просмотреть все коммиты от самого нового до самого первого, для выхода можете ввести:
- q
- Q
- :q
- :Q
- ZZ
Для этой команды также есть параметры:
- -p или --patch - Отображает изменения
- --stat - Отображает статистику изменения
- --shortstat - Отображает только строку с количеством изменений/вставок/удалений для команды --stat.
- --name-only - Показывает список изменённых файлов после информации о коммите.
- --name-status - Показывает список файлов, которые добавлены/изменены/удалены.
- --abbrev-commit - Показывает только несколько символов SHA-1 чек-суммы вместо всех 40.
- --relative-date - Отображает дату в относительном формате (например, «2 weeks ago») вместо стандартного формата даты.
- --graph - Отображает ASCII граф с ветвлениями и историей слияний
- --oneline - Сокращение для одновременного использования опций --pretty=oneline --abbrev-commit.
- --pretty - Настраивает шаблон представления коммита с помощью ключей можно настроить порядок выведения выбранных параметров в формате --prety="Хэш : %H, информация: %s" где символы %H, %s будут заменены согласно ключам
Вот список ключей для --prety:
- %H - Хеш коммита
- %h - Сокращённый хеш коммита
- %T - Хеш дерева
- %t - Сокращённый хеш дерева
- %P - Хеш родителей
- %p - Сокращённый хеш родителей
- %an - Имя автора
- %ae - Электронная почта автора
- %ad - Дата автора (формат даты можно задать опцией --date=option)
- %ar - Относительная дата автора
- %cn - Имя коммитера
- %ce - Электронная почта коммитера
- %cd - Дата коммитера
- %cr - Относительная дата коммитера
- %s - Содержание
Содержание в процессе просмотра вы заметили, что обычно каждый коммит состоит из 4 вещей:
- commit - после него указан уникальный id коммита, хэш, по которому вы всегда можете обратиться к нему
- Author - после него указан автор данного коммита
- Date - после него указано время коммита(день недели, месяц, число, точное время до секунд, год, часовой пояс)
- последняя строчка без оглавления, в ней указано сообщение коммита, указаное при создании коммита
А последний коммит был назван HEAD, обратившись к переменной HEAD вы всегда найдёте последний коммит, ее также можо использовать в командах вместо хэша последнего коммита
Просмотр состояния файлов git status (от англ. status, «статус», «состояние») — покажи текущее состояние репозитория.
Добавление изменений в последний коммит git commit --amend --no-edit (от англ. amend, «исправить») — добавь изменения к последнему коммиту и оставь сообщение прежним; git commit --amend -m "Новое сообщение" — измени сообщение к последнему коммиту на Новое сообщение.
Если вы не указали, что сообщение остаётся прежним/(--no-edit/) и не указали сообщение /(-m "Сообщение"), откроется встроенный редактор, выйти из которого можно нажав нужные клавиши из инструкции внизу экрна/(^ - значит Ctrl), но есть редактор без инструкции,Vim, чтобы выйти из редактора Vim: нажать Esc, ввести :qa!, нажать Enter.
«Откат» файлов и коммитов git restore --staged hello.txt (от англ. restore, «восстановить») — переведи файл hello.txt из состояния staged обратно в untracked или modified; git restore hello.txt — верни файл hello.txt к последней версии, которая была сохранена через git commit или git add;
git reset --hard b576d89 (от англ. reset, «сброс», «обнуление» + hard, «суровый») — удали все незакоммиченные изменения из staging и «рабочей зоны» вплоть до указанного коммита. Просмотр изменений
git diff (от англ. difference, «отличие», «разница») — покажи изменения в «рабочей зоне», то есть в modified-файлах; git diff a9928ab 11bada1 — выведи разницу между двумя коммитами; git diff --staged — покажи изменения, которые добавлены в staged-файлах.