diff --git a/123.md b/123.md index 34b0eca..b40325f 100644 --- a/123.md +++ b/123.md @@ -1,3 +1,220 @@ -igfisdhghdfgsklfdslgk -dfg;ldkfgsldfnsg;ns -f'sgn'slgsdf;\'n \ No newline at end of file +# Инструкция для работы с Git и удалёнными репозиториями # + +![Logo](https://www.freeshows.ru/i/news/img20210310_000.png) + +## Что такое Git? + +**Git** - это одна из реализаций распределённых систем контроля версий, имеющая как и локальные, так и удалённые репозитории. Является самой популярной реализацией систем контроля версий в мире. + +--- + +## Подготовка репозитория + +Для создания репозитория необходимо выполнить команду **git init** в папке с репозиторием, и у Вас создаться репозиторий (появиться скрытая папка.git) + +--- + +## Слежение за новыми файлами и их фиксация + +***Чтобы*** начать управление версиями существующих файлов, укажите файлы, за которыми должна следить система, и выполните первую фиксацию изменений. Для этого потребуется несколько команд **git add**, добавляющих файлы, за которыми вы хотите следить, а затем команда **git commit**: + + +> git add Имя_файла.тип_файла +> +> git commit -m 'комментарий' + + +Чуть позже мы подробно рассмотрим, что делают эти команды. А пока у вас есть ре- позиторий Git с добавленными туда файлами и первой зафиксированной версией. + +--- + +## Отчет о состоянии +***Чтобы*** узнать, что Git думает о нашей папке и что в ней происходит, проверить статус папки, нужно ввести команду **git status** + +--- + +## Просмотр индексированных и неиндексированных изменений + +***Чтобы*** получить не только список отредактированных файлов, но и узнать, что именно изменилось, воспользуйтесь командой **git diff**. Она даст ответ на два вопроса: что вы отредактировали (но пока не проиндексировали) и что из проиндексированного готово к фиксации? + +--- + +## Просмотр истории версий + +После сохранения нескольких версий файлов или клонирования уже имеющего содержимое репозитория вы, скорее всего, захотите взглянуть на то, что было сделано ранее. Базовым и самым мощным инструментом в данном случае является команда **git log**. + +>$ git log +>commit >ca82a6dff817ec66f44342007202690a93763949 >>Author: Scott Chacon Date: Mon Mar 17 21:52:11 2008 -0700 + + changed the version number + +commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon Date: Sat Mar 15 16:40:33 2008 -0700 + + removed unnecessary test + +commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon Date: Sat Mar 15 10:31:28 2008 -0700 + + first commit + +По умолчанию при отсутствии параметров команда **git log** выводит в обратном хронологическом порядке список сохраненных в данный репозиторий версий. То есть первыми показываются самые свежие коммиты. Как видите, рядом с каждым коммитом указывается его контрольная сумма SHA-1, имя и электронная почта автора, дата создания и сообщение о фиксации. + +--- + +## Перемещения между версиями + +***Чтобы*** перемещаться между ветвями нужна команда **git checkout**. Проверка ветки обновляет файлы в рабочем каталоге в соответствии с версией, хранящейся в ветке, и сообщает Git записывать все новые коммиты в этой ветке. + +> git checkout и первые 4 символа от номера ветви + +***Чтобы*** продолжить работу после того как мы переключались между разными версиями (ветвями), нам необходимо вернуться в актуальное состояние. +Для этого нужно ввести команду **git checkout master** + +--- + +## Что происходит, если переименовать файл? + + Git следит за файлами по их именам. Если у нас больше нет файла с таким именем, значит Git будет считать, что файл удалён и что есть неотслеживаемый файл с новым названием + + +***Чтобы*** это исправить мы можем добавить наш файл с правильным именем в отслеживаемый, сделать новый commit + +> git add Имя_файла.тип_файла +> +> git commit -m 'комментарий' + +## Создание новой ветки + +***Чтобы*** создать новую ветку, например, для работы над определенным разделом, нужно ввести команду + +> git branch name_branch + +***Чтобы*** перейти на новую созданную нами ветку, например, для работы над определенным разделом, нужно ввести команду + +> git checkout name_branch + +--- + +## Слияние ветки с основной + +***Чтобы*** добавить ветку к основной (главной) нужно ввести команду + +> git merge name_branch + +Прежде чем начинать слияние, нужно перейти на ветку мастер. Эта команда работает только если ты сливаешь дополнительную ветку к основной. + +## Удаление ветки + +***После*** того как мы объединили основную ветку с дополнительной, вторую нам нужно удалить с помощью команды + +> git branch -d name_branch + +# Работа с удаленными репозиториями + +## Скачивание репозитория на свой компьютер + +#### ***Чтобы*** скачать репозиторий с сервиса GitHub, нужно создать папку на рабочем столе и открыть её в Studio Visual Code. Далее ввести в терминал команду git clone и ссылку на репозиторий. После того как мы перешли на нужный нам репозиторий, файл которого был помещен в созданную нами заранее папку, мы должны изменить наше местоположение и перейти в папку которую мы скачали вместе с репозиторием. ***Для этого*** нужно ввести в терминал команду cd и название папки. Это локальный способ работы с файлом. Да, мы скачиваем из сети файл, но все изменения хранятся на компьютере. + +## Загрузка репозитория в сеть + +#### ***Чтобы*** наш репозиторий оказался на GitHub, нужно создать новый репозиторий на сервисе, нажав кнопку +> Create repository + +#### Далее есть 3 варианта, которые нам подсказывает GitHub: + +1. создать и начать через терминал с ним работать (список команд в подсказке); +2. уже существующий репозиторий с компьютера привязать к этому; +3. импортировать код репозитория. + +> git remote add name_repository и ссылка + +Эта команда связывает наш локальный репозиторий с удалённым. + +> git branch -M main + +Эта команда указывает какая ветка будет являться основной. + +> git push -u name_repository main + +Этой командой мы направляем то, что у нас есть на локальном репозитории в интернет. + +Это одноразовая работа, а всё идёт по другому, всё меняется несколько раз. Если мы опять что-то поменяли и хотим направить эти изменения в интернет, то: + +> git push +--- +Если на сайте GitHub более актуальная версия файла, то: + +> git pull + +#### Это значит стянуть с удаленного репозитория. +--- +***Чтобы*** наш репозиторий улучшили с другого репозитория, но при этом сделали эти изменения с нашего позволения, есть команда: + +> PULL REQUEST +--- +***Чтобы*** взять чей-то репозиторий с сервиса GitHub нужно сделать: + +> FORK + +В переводе как ответвление репозитория или вилка. ***Далее*** с нашего аккаунта мы можем этот репозиторий забрать, скопировав ссылку и добавить скаченный уже к существующему. +--- +Также принято добавлять новую ветку с описанием файла или этого проекта. Например: + +> git branch description + +Переходим на неё + +> git checkout description + +И создаем новый файл под названием README.md. Далее мы можем проверить появился ли он командой git status и добавить его к отслеживаемым файлам: + +> git add README.md + +> git commit -m "add description" + +***Чтобы*** предложить свои изменения создателю проекта, нужно ввести команду: + +> git push --set-upstream name_repository description + +После обновляем GitHub и появляется кнопка + +> Compare & pull request + +Далее нам показывают есть конфилкт при слиянии или нет и предлагает добавить описание или какую-то информацию. После мы можем можем направить тот самый pull request, нажав на кнопку: + +> Create pull request + +Именно так происходит работа над OPEN SOURSE (значит открытый исходный код) проектами. +--- +##### **Все изменения нужно сохранять в виде отдельных commit* +*** + +# Подведем итог списком команд и их значений + + +* **git init** - позволяет из нашей папки сделать репозиторий + +* **git add** - добавление файла к отслеживанию программой Git + +* **git commit** - сохраняет текущее состояние и фиксирует изменения в Git + + > - а "изменение" + > - m "добавление" + + +* **git diff** - разница между текущим файлом и изменённым (сохранённым) + +* **git log** - показывает журнал всех изменений + +* **git checkout** - переход в выбранное состояние файла + +* **git checkout name_branch** - переход в выбранную нами ветку + +* **git branch name_branch** - создание новой ветки + +* **git merge name_branch** - слияние ветки, название которой мы указали с веткой master + +* **git branch -d name_branch** - удаление ветки, после слияния с основной + +--- + + ##### P. S.: thank you for your attention! ~~Buy~~ Goodbuy \ No newline at end of file