diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cdbbbbd --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +Git_image_0.jpeg +Git_image_2.png +Step_1_createRep.png +Step_3_Create_rep.png +Step_4_Req.png +Step_2_Create_rep.png \ No newline at end of file diff --git a/Git_image_0.jpeg b/Git_image_0.jpeg new file mode 100644 index 0000000..43cf07e Binary files /dev/null and b/Git_image_0.jpeg differ diff --git a/Git_image_2.png b/Git_image_2.png new file mode 100644 index 0000000..6c49a22 Binary files /dev/null and b/Git_image_2.png differ diff --git a/Step_1_createRep.png b/Step_1_createRep.png new file mode 100644 index 0000000..d59b82f Binary files /dev/null and b/Step_1_createRep.png differ diff --git a/Step_2_Create_rep.png b/Step_2_Create_rep.png new file mode 100644 index 0000000..2824260 Binary files /dev/null and b/Step_2_Create_rep.png differ diff --git a/Step_3_Create_rep.png b/Step_3_Create_rep.png new file mode 100644 index 0000000..b7feb51 Binary files /dev/null and b/Step_3_Create_rep.png differ diff --git a/Step_4_Req.png b/Step_4_Req.png new file mode 100644 index 0000000..f963fa0 Binary files /dev/null and b/Step_4_Req.png differ diff --git a/git-instruction.md b/git-instruction.md index 8448a7d..9d4efc6 100644 --- a/git-instruction.md +++ b/git-instruction.md @@ -1,100 +1,143 @@ -# Инструкция по работе с git -![Официальный логотип git](logo.png) +# Инструкция по работе с Git -## Lesson 1 +## Что такое Git? -## Что такое git и контроль версий -**Системы контроль версий** - это системы, которые: -1. обеспечивают сохранение содержимого файлов и папок(их *версий*) -2. Обеспечивают передвижение по *версиям* этих файлов и папок +![Для начала, смешной мем](Git_image_0.jpeg) -**git** - это самая известная и используемая на данный момент реализация контроля версий с командным интерфейсом +Git - это программа, для отслеживания и сохранения версий файлов в нашем проекте. Необходимый инструмент в профессии программиста, который упрощает работу и дает возможность работать целой команде программистов над одним проектом. -**Локальный репозиторий** - это хранилище *изменений* Git в виде папки. +## Инициализация -## Инициализация локального репозитория +Для начала работы необходимо выполнить инициализацию. Делается это через команду **git init** в терминале. -Для того чтобы сказать git, что данная папка является локальным репозиторием нужно зайти в папку и ввести в ней команду +Как сказал один мудреший человек : +>"*Программисты - люди ленивые, так что слово initialization сократили до init.*" -*git init* +### Что такое коммит +Коммит - это фиксация изменений в файле. -Также, если этого раньше не делалось, то нужно определить ваше имя пользователя и email командами: -. git config --global user.name "your name" -. git config --global user.email your email +## Добавить коммит -## Добавление файлов под контроль версий +Чтобы добавить новый коммит, нужно сделать ~~ритуальный призыв умного друга-программиста~~ эти 3 шага : -Для этого нужно ввести команду: -*git add имена файлов* -Теперь имена и содержимое этих файлов можно сохронять +1. Сохранить файл -## Делаем коммит +Так как мы - продвинутые программисты, делаем это через сочетание клавиш Ctrl+S. -Для того, чтобы изменения представляли собой отдельную версию, к которой можно возвращаться и манипулировать после добавления под **контроль версий**, нужно ввести команду: +2. Добавить файл в отслеживаемые гитом -*git commit -m "Название версии"* +Для этого вызываем команду git add имя файла. Для упрощения работы программистам, в гите есть функция автозаполнения. Чтобы не писать название файла вручную, используем клавишу TAB. -Можно также добавить под контроль версий и сформировать коммит для всех файлов и папок одной командой: -*git commit -am "Название версии" +3. Вызвать команду **git commit** -m "здесь пишем комментарий к изменениям" -## Просмотр текущего состояния репозитория -Для вывода текущего состояния локального репозитория используются команды: ->git status - просмотр состояния файлов и папок в репозитории +### git log -> git diff - просмотр самих изменений файлов и папок +Команда **git log** позволяет увидеть все сделанные нами коммиты с комментариями. -## Просмотр всех изменений репозитория +## Переход между коммитами -Для просмотра истории изменений от начала и последнего коммита нужно ввести: +Переключаться между версиями позволяет команда **git checkout**. -*git log* +### Как перейти на другую версию файла +Для того, чтобы перейти на другую версию файла (коммит), необходимо вызвать **git log**. Найти интересующий нас коммит можно по комментарию. Рядом со словом commit найдем его номер и скопируем. +После git ckeckout можно ввести весь номер коммита, а можно первые 4 цифры номера. Гит поймет какой коммит от него нужен. -git status - команда, вывод состояния репозитория -git init - иницыализация git -## Lesson 2 -## работа с ветками в git -git branch - выводит ветки -branch -git branch name - создание ветки -Github +### Git checkout master -Данила +Чтобы вернуться к актуальному состоянию файла и продолжить работу, необходимо вызвать команду git checkout master. +Так мы переходим на ветку master, на которой по умолчанию пишется текущее состояние файла. -## Альтернативные системы контроля версий: +## git status -[DVC, или Data Version Control](https://habr.com/ru/companies/skillfactory/articles/527510/), — это один из многих доступных инструментов с открытым исходным кодом, упрощающих работу с проектами Data Science и ML. +Посмотреть актуальное состояние проекта позволяет команда **git status**. Если в файл был изменен, но нет коммита или есть файлы которые не отслеживаются, **git status** сообщит нам об этом. Например, вот так: -Используется подход Git'а в том смысле, что дает интерфейс командной строки, который настраивается в несколько простых шагов. DVC, как предполагает его название, фокусируется не только на версионировании данных. Инструмент помогает командам управлять конвейерами и моделями машинного обучения. В конце концов, DVC способствует согласованности вашей команды и воспроизводимости ваших моделей. +![вот так](Git_image_2.png) -**Преимущества** +## Ветки -1. **Лёгкий**, исходники открыты, подходит для всех основных облачных платформ и типов хранилищ данных. -2. **Гибкий**, независимый от формата и фреймворка, лёгкий в применении. +### Создание ветки -**Недостатки** +Для создания ветки, необходимо использовать команду git checkout *Имя ветки*. Например : -1. Контроль версий DVC тесно связан с управлением конвейером. Это означает, что, если ваша команда уже применяет другой инструмент конвейера данных, будет **дублирование**. -2. DVC **лёгкий**, это означает, что вашей команде, возможно, придётся **вручную разработать дополнительные функции**. +Git checkout about_branch +### Git branch +Для просмотра всех существующих веток используется команда **git branch**. Та ветка, на которой мы сейчас находимся, отмечена звёздочкой. -### Delta Lake +### Переход на другую ветку -[Delta Lake](https://delta.io/) — это слой хранилища с открытым исходным кодом, помогающий улучшить состояние озёр данных. Это делается предоставлением транзакций ACID, версионированием данных, управлением метаданными и управлением версиями данных. Инструмент находится ближе к слою абстракции озёр данных, заполняя пробелы там, где большинство озёр данных ограничены. +Для перехода на другую ветку, необходимо использовать команду **git checkout** *название ветки, на которую требуется перейти*. Актуальная версия файла, находится на ветке **main**. -Преимущества +### Слияние -1. Предлагает множество функций, которые могут не входить в вашу систему хранения данных, например ACID-транзакции или эффективное управление метаданными. +Слияие веток можно выполнить следующим образом: -2. Снижает необходимость в ручном управлении версиями данных и ручном решении других связанных с данными вопросов, позволяя разработчикам сосредоточиться на построении продуктов поверх озёр данных. +1. Перейти на основную ветку, с которой выполняем слияние, с помощью команды **git checkout** *название основной ветки* +2. Вызываем команду **git merge** *имя ветки, которую присоединяем* +3. После присоединения, дополнительную ветку можно удалить. Для этого нужно вызвать команду **git branch** с флагом -d *название ветки, которую нужно удалить*. Например: -Недостатки +git branch -d BranchVanish -1. Delta Lake часто бывает перегибом для большинства проектов: инструмент был разработан для работы со Spark на больших данных. +## Работа с удаленными репозиториями -2. Требуется специальный формат данных, а это означает, что инструмент теряет в гибкости и зависим в отношении текущих форматов. -Основная задача инструмента — действовать в качестве скорее уровня абстракции данных, а это может быть не тем, что нужно вашей команде, и также может игнорировать разработчиков, которым нужно решение легче. +Удаленные репозитории полезны тем, что наш проект могут видеть другие люди и предлагать изменения. -[Другие альтернативы](https://habr.com/ru/companies/skillfactory/articles/527510/) +### Как скопировать чужой репозиторий +Чтобы скопировать чужой проект с github к себе на компьютер необязательно иметь там свой аккаунт. +Единственное, что необходимо - это найти интересующий нас репозиторий, найти вкладку Code, скопировать ссылку и через команду **git clone** *ссылка на реп.* склонировать себе на компьютер проект. + +### Как создать репозиторий на сайте GitHub + +Необходимо войти в свой аккаунт на сайте github.com ( если его нет - создать, ~~купить, украсть~~). + +Сверху найти кнопочку плюсика - Create new.... new repository. + +![Step_1](Step_1_createRep.png) + +Задать имя, параметры приватности, настройки .gitignore, лицензии и нажать на кнопку Create repository. + +![Step_2](Step_2_Create_rep.png) + +Далее у нас появляется ссылка на репозиторий и инструкции. + +![Step_3](Step_3_Create_rep.png) + + +Чтобы загрузить проект с локального компьютера последуем пункту push an existing repository from the command line в нашем проекте. +Связываем наш локальный репозиторий с репозиторием в интернете. +Указываем какая ветка будет являться основной. +Направляем наш проект в интернет. + +Если всё прошло успешно, в терминале сообщений об ошибках не будет, а на сайте github по ссылке репозитория появятся файлы нашего проекта. + +### Подгрузка изменений с сайта в локальный репозиторий + +Если изменения в репозитории были проведены на сайте github и необходимо их перенести к себе на компьютер (локальный репозиторий), нужно воспользоваться командой **git pull**. Эта команда "подтянет" все изменения с сервера и выполнит слияние версий. + + +## Внесение изменений в чужой проект + +В opensource проектах множество людей могут предлагать свои изменения хозяину исходного проекта. + +Для начала необходимо сделать свою копию чужого репозитория, делается это с помощью кнопки Fork. + +![Step_4](Step_4_Req.png) + +Точная копия репозитория появится в нашем аккаунте на github. + +### Клонирование репозиториян на локальный компьютер + +Для работы над репозиторием на локальном компьютере нужно воспользоваться кнопкой Code, cкопировать ссылку и вызвать команду в терминале **git clone**. + +После внесения изменений, можно направить новую верию файла в удаленный репозиторий, на github с помощью команды **git push**. + +### Как предложить изменнеия хозяину репозитория + +После вливания копии с локального компьютера на удаленный репозиторий, появится кнопка " Compare & Pull request " + +Заполняем поля с описанием и отправляем - **Create Pull request**. + +При этом хозяин проекта может просмотреть изменения и если они ему понравятся - слить предложенные изменения с основным проектом. \ No newline at end of file