Всё что нужно знать о Git для работы с Python
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