Git

Введение

Как и многие я слышал о git еще до увлечения программированием, но начал я им пользоваться наверное только спустя пол года от начала этого увеличения. И как ни странно по причине удаления содержимого одного из моих первых больших css файлов, на который было потрачено, не стану выдумывать цифру, но думаю пару десятков часов. Код, на который потрачено пара десятков часов это может быть небольшая утрата, и в моем случае это даже пошло на пользу, и не по той причине, что я стал пользоваться git, а по той, что я переписал этот css уже с новыми знаниями гораздо грамотнее и лаконичнее. Но зачастую бесследно утерянным может оказаться достаточно ценный и важный код. Это наверное самая распространенная и повсеместная причина, по которой начинающие программисты самоучки все-таки начинают использовать git. Не затягивайте с этим и вы.

git - система контроля версий. Благодаря git мы можем делать так скажем 'слепки' кода и хранить их, и в том случае, когда в процессе написания кода мы свернем куда-то ни туда можно просто откатить состояние кода к ранее созданному 'слепку'. Помимо этого git позволяет удобно работать над одним кодом командой людей. Ознакомится с документацией и скачать git можно с официального сайта - git.

GitHub же в свою очередь это так скажем социальная сеть для разработчиков, на GitHub можно хранить свой, делится им с другими пользователями, найти интересные проекты других разработчиков, найти open-source проекты. В общем, рекомендую зарегистрироваться создать свою учетную запись на GitHub. С этим, как и с установкой git, не должно возникнуть никаких сложностей.

Создание своего репозитория на GitHub

Сразу перейдем к использованию GitHub, как к хранилищу для нашего кода. Репозиторий - папка проекта на GitHub.

Я хочу загрузить все примеры кода из раздела этого сайта посвященного базовому синтаксису языка Python на свой GitHub. Для начала зайдем на GitHub.

Для создания нового репозитория нажмем на плюс рядом со своей иконкой в правом верхнем углу и выберем 'New repository'. Откроется окно как на скриншоте. В первой строке дадим название репозитория ниже можно задать описание, поле с описанием является необязательным. Далее можно выбрать тип доступности проекта, а именно публичный или приватный. Ниже можно добавить в файл readme file - это файл с описанием проекта. Файл gitignore содержит файлы, которые добавлять в проект мы не будем, при создании этого файла можно выбрать для какого языка будет использоваться этот файл. Где и когда этот файл может пригодиться? Проект может состоять из большого количества файлов и удобнее добавлять новую версию проекта в репозиторий целиком, а не вписывать каждый необходимый файл проекта вручную, тут на помощь и приходит файл gitignore куда можно будут поместить названия файлов, которые добавлять в репозиторий не нужно. Choose a license позволяет добавить лицензию в ваш проект, в этой лицензии можно написать какие действия разрешены, а какие запрещены относительно вашего проекта. Теперь разобравшись с этим можно нажать кнопку 'Create repository'.

Мы увидим следующее. Наш пустой репозиторий, в котором пока есть только два файла gitignore и readme. Файл readme тут же предлагается отредактировать, пока не будем этого делать.

Теперь перейдем в pycharm и откроем наш проект, который хотим отправить на github.

Перейдем в консоли в папку с нашим проектом и введем следующие команды
git init, которая создаст новый репозиторий git
git add ., которая добавит в этот репозиторий все файлы из этой папки, точка после add как раз означает выбор всех файлов
git commit -m 'название', которая создаст первую копию проекта, с заданным названием
Теперь нужно с нашим локальным только что созданным проектом соединить наш ранее созданный репозиторий на github.

Для этого нам понадобится ссылка нашего проекта, ее можно взять нажав на кнопку 'code' на странице репозитория.

Скопируем эту ссылку и напишем в консоль следующие команды
git remote add origin 'ссылка с github', эта команда соединит наш удаленный репозиторий с локальным
git push -u origin master далее можно этой командой отправить файлы в репозиторий

После нажатия enter нас попросят ввести login и пароль от нашего github, но с августа 2021 года вместо пароля требуется ввести token. token можно получить зайдя в своем профиле github - settings - developer settings - generate new token далее напишем для чего нужен ключ, зададим его настройки и нажмем кнопку 'Generate token', этот токен подставляем в поле с паролем.

Информация в консоли подсказывает, что все файлы добавлены и создана новая ветка. Вернемся теперь на github и посмотрим, что изменилось.

Появилась ветка с названием 'master'. Перейдем в нее.

Там действительно находятся все наши файлы. Я намеренно удалил пустой файл test.py, чтобы показать, как выглядят изменения в репозитории. Справа сверху показано количество коммитов проекта, а слева сверху последнее изменение и комментарий пользователя совершившего изменения.

Теперь можем открыть любой файл и увидеть, что он содержит весь код, который должен.

Второй репозиторий на GitHub

Теперь давайте загрузим код уроков обучающего материала по ООП языка Python, для этого также воспользуемся консолью, но немного задержимся на ней.

Как и ранее перейдем в папку с нашим проектом, командой git init добавим папку git в проект, а после командой ls -a, убедимся, что папка .git добавлена к нашему проекту, вместе с тридцатью уроками. После этого сделаем то, что нужно сделать сразу как только начинаешь пользоваться git, записать свое имя и свой email. Команды для этого:
config --global user.name "(Ваше имя)"
git config --global user.email (Ваш email)
Команда git config --list покажет вам эти данные

Команда git status покажет текущий статус проекта, сверху видим надпись No commits yet, говорящую, что ни один коммит для данного проекта еще создан не был, а ниже красным написаны перечислены файлы готовые к первому коммиту, но пока не добавленные в область хранения. Делается уже знакомой командной git add. Сделаем это.

Зеленый цвет означает, что все эти файлы часть нашего проекта. Также сверху можно увидеть команду
git rm --cached (файлы) это команда для исключения из проекта ненужных файлов.
Теперь можно делать первый коммит данного проекта, команда git commit -m "(описание коммита)".

Готово, первый коммит создан, а команда git status скажет, что древо проекта на данный момент чистое и что у нас нет новых файлов для нового коммита.

Все очень просто и очень полезно.

Теперь давайте сделаем какие-нибудь изменения в проекте.

Например откроем файл lesson_15, сейчас его содержимое таково. Обратите внимание я сделал лишний перенос на новую строку, строка 18, и название файла стало подсвечиваться сними, это означает, что в файле произошли изменения, но давайте сделаем еще несколько изменений.

Добавим к списку языков Ruby и добавим еще один print() с исполнением методом __next__.

Теперь вернемся в консоль все с той же командой git status и увидим файлы подвергшиеся изменению, оказывается я изменил еще и файл lesson_30, тот же снос на новую строку в конце кода, я бы и не заметил этого не добавив git в свой проект и не воспользовавшись командой git status. Согласитесь, очень удобно отслеживать изменения всего проекта в реальном времени одной командой в терминале.

То что изменениям подверглись два файла даже лучше, давайте сохраним изменения только одного файла. Для этого после команды git add напишем путь до него, написанный после слова modified:. Для добавления всех изменений можно также воспользоваться командой git add -A.

теперь сделаем второй коммит для сохранения этих изменений. Как видим консоль подсказывает нам, что один файл был изменен.

Теперь давайте воспользуемся этими коммитами и посмотрим как к ним возвращаться.

Во-первых, у нас по-прежнему есть незапланированные изменения в файле lesson_30. Команда
git stash вернет состояние файлов, изменения которых не были внесены в новый коммит, к исходному состоянию.

Все. Изменения файла, какими бы они не были, отменены.

Теперь, что касается возвращения к ранним коммитам.

По команде
git log можно увидеть все коммиты нашего проекта и их уникальные идентификаторы, воспользуемся им для возвращения проекта к более ранней версии.

Для этого воспользуемся командой
git checkout (идентификатор коммита)
Все мы вернулись к нашему первому коммиту, откроем файл lesson_15.

Код вернулся к его исходному состоянию. Для возвращения его обратно к измененному состоянию можно просто написать команду git checkout, но уже с идентификатором последнего коммита.

На данный момент эта вся информация, которую я хотел бы рассказать и показать касательно работы с git внутри консоли. Теперь отправим этот репозиторий на GitHub.

Создадим новый репозиторий на GitHub, сразу после нажатия Create repository мы видим такое окно, откуда можно взять команды для соединения нашего проекта к репозиторию.

Воспользуемся первой и третьей командой, но в третьей вместо имени ветки main, запишем все в ветку master, и так же как и в первый раз введем логи и пароль от github, напоминаю под паролем тут подразумевается access token вашего аккаунта GitHub.
git branch -M main переименует ветку master по-умолчанию, в ветку main, рекомендация от github, следовать которой или нет, когда речь идет о работе над проектом в одиночку, решать вам.

Теперь наш GitHub хранит и второй репозиторий, коммиты которого кстати также перенеслись на GitHub и теперь хранятся там.

По клику на коммит в удобном формате показаны произведенные изменения.

Таким образом, мы добавили на GitHub два проекта, разобрались с командами git и увидели насколько он полезен и прост в использовании. Не игнорируйте git, если решили заниматься программированием.


Материал будет дополняться...
(скорее всего)

Для отправки комментария необходимо авторизоваться



Комментарии

Здесь пока ничего нет...