Git introduction

Git introduction

morgangso@gmail.com

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

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

Системы контроля изменений встроена почти в каждый текстовый редактор. Когда в "Word" или в "sublime text", "VScode", нажимаем комбинацию из клавиш: `ctrl + z` - тогда в последние изменения в файле отменяются, а если мы нажмем: `ctrl + shift + z` - в таком случае отмененные изменения вновь применяться.*

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

Вернемся к git, если работая с классическими редакторами мы имеем только "одну тропинку", то git позволяет нам создавать много таких тропинок и по необходимости перепрыгивать с одной на другую, мы можем создавать новую тропинку из старой а потом совмещать их в одну. С git мы можем жестко фиксировать каждый шажок - изменение, и как-будто используя 'ctrl+z' откатываться на предыдущий шаг и т.д. Но довольно аналогии, надеюсь вы поняли общую концепцию git. В любом случае хочу посоветовать следующие материалы:

В целом, git - набор консольных утилит, безусловно у него есть надстройки в виде GUI, но вернемся к ним чуть позже, пока сосредоточимся на работе git в cli.

Работа с git репозиторием может строиться по нескольким сценариями:

  • Нет локального репозитория ни удаленного
  • Есть удалленный репозиторий но нет локального
  • Есть локальный репозиторий и удаленный - классическая работа
Сценарий №1

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

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

git init

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

git add .

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

git commit -m "first commit"

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

git remote add origin git@github.com:username/name_project.git

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

git push -u origin master

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

Миссия выполнена ‎‎✅


Сценарий №2

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

git clone git@github.com:username/name_project.git

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

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

git add name_file.py

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

git commit -m "first commit"

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

git pull

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

git push

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


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

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

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

git branch 

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

git checkout <name_branch>


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

git checkout .


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

git status


Более краткую версию можно прочитать здесь.

Report Page