Всё что нужно знать о Git для работы с Python

Всё что нужно знать о Git для работы с Python

PythonGuru
PythonGuru

Привет, любитель Python!

В сегодняшней статье мы разберёмся что такое Git и как его использовать как для своих проектов, так и чужих.


Что такое Git

Git - это одна из систем контроля версий. По существу это значит, что она хранит всю историю изменений проекта. История Вашего проекта и история изменений этого же проекта у Ваших коллег - у всего будет копия. Это полная противоположность SVN, где вся история изменений храниться в одном месте.

Используя Git у вас появляется куча преимуществ для работы в команде, каждый участник имеет возможность делиться своими изменениями с другими участниками проекта, и дает возможно вместе работать над одним проектом.

GitHub, часто путают с Git. На самом деле GitHub - это хостинг репозиториев.

Системы контроля изменений встроена почти в каждый текстовый редактор. В Word, Sublime Text 3 или VScode нажимаем комбинацию из клавиш: ctrl + z - тогда в последние изменения в файле отменяются, а если мы нажмем: ctrl + shift + z - в таком случае отмененные изменения вновь применяться.

ctrl + z - в Windows | OC linux или macOS - cmd + z
ctrl+shift+z - в Windows | OC linux или macOS - cmd+shift+z

Как начать если ещё нет репозитория

Сначала рассмотрим вариант когда у нас нет репозитория, есть только папка нашего проекта, а может и просто один файл, не имеет разницы.

Нам необходимо в командной строке нашей ОС зайти в папку проекта, и инициализировать в папке наш репозиторий - объявить что данная папка это репозиторий, инициализация происходит одной командой:

git init
Инициализировать репозиторий необходимо один раз на одном компьютере, и только в корневой папке проекта!

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

git add .
Данная команда добавит для отслеживания все объекты в директории, иногда это может быть не желательно, поскольку директория проекта может содержать объекты которые не надо добавлять в git и в репозиторий, например: файл базы данных, конфигурационные файлы с паролями, медиа файлы (картинки, видео, аудио файлы) и т.д

После указания файлов для отслеживания, мы должны зафиксировать (закомитить - от слова комит, commit) изменения в выше указанных файлах, делаем это командой:

git commit -m "first commit"
Данную команду всегда используем с флагом "-m" и аргументом, который является комментарием!

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

git remote add origin git@github.com:username/name_project.git
Адрес можно получить при создании репозитория, через интерфейс

После фиксирования всех изменений, нам необходимо отправить изменения на сервер (сделать первый push), делать мы это будем с указанием новой ветки так как на сервере нет ничего, и не создано пока ни одной ветки.

git push -u origin master

Готово! Мы создали репозиторий и сохранили (запушили) его на сервере.

Как начать если проект уже существует в удаленном репозитории

Рассмотрим сценарий, когда нас пригласили работать над новым для нас, проектом, но проект уже существует в удаленном репозитории, и нам нужно клонировать репозиторий к себе локально. Клонирование репозитория происходит следующей командой:

git clone git@github.com:username/name_project.git
Адрес репозитория нам должен сообщить хозяин самого репозитория

После клонирования мы получаем полностью готовы и настроенный проект. Мы можем начинать работать над проектом, вносить изменения и т.д. если работать в master ветке считается приемлемым в вашем проекте.

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

git add name_file.py
Также можно указывать список файлов через пробел, например: git add file1.py file2.py file3.py

Создаем коммит - фиксируем все изменения из файлах которые мы добавили предыдущей командой 'добавить'.

 git commit -m "first commit"
Вводить комментарий необходимо каждый раз, в ваших же интересах писать как можно более осмысленные названия)

Работая в ветке которая уже есть на удаленном сервере, необходимо помнить что её могут изменить, и ваша локальная версия ветки может устареть, для этого необходимо скачать последние версию с сервера, что можно сделать командой:

 git pull
При работе с данной командой может возникнуть конфликт - двух версий (между вашей локальной копией и копией на сервере), требующего решения

Пройдя весь путь, нам теперь необходимо сохранить наши изменения на сервере, возвращаясь к началу напоминаю что git - распределенная система, чтобы все кто работает над проектом вместе с вами увидели ваши изменения, и просто чтобы сделать резервную копию на удаленном сервере, мы должны послать (в дословном переводе "толкнуть") наши изменения, командой:

git push
При работе с веткой внося изменения, мы создаем новую версию, но тем временем кто-то тоже может работать с вашей веткой и обновлять версию на сервере быстрее и чаще чем вы, поэтому не забывайте делать git pull

Мы прошли сценарий от начала и до конца, теперь такой путь нам надо будет повторять раз за разом, вы быстро привыкните и освоитесь. А когда начнете пользоваться git через gui интерфейс, весь этот путь вы будете пробивать менее чем за минуту.

Некоторые другие другие команды git.

Работа с git предполагает наличие нескольких веток

Чтобы посмотреть список всех локальных "веток", воспользуемся командой:

git branch 
Команда git branch выведет список лишь тех веток, которые вы создали на локальной машине, они отличаются от тех что хранятся на сервере

Переключение между ветками:

 git checkout <name_branch>
В качестве аргумента, куда переключаться, можно указывать не только имя ветки но и hash commit

Работая с несколькими ветками и переключаясь между ними может появляться:

git checkout .
Будьте осторожны используя данную команду, она удалит все не закомментируемые (зафиксированные) изменения

Для просмотра не зафиксированных изменений, используем команду:

git status

Совершенствуй знания по Python каждый день у нас на канале, PythonGuru.

Вопросы, реклама - @pythonguru_admin

Поддержать проект (сбербанк):

4817760113082329

Report Page