GIT

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

Командная строка

Команды

Общие

ls

pwd

cd

~ тоже самое, что прописывание пути домашней директории

Сменить директорию

Bash

Текстовый редактор

vim

cat

Выводит содержимое файла

rm

Удалить файл

Как выйти из vim?

i

Активирует Insert mode

esc - выйти из текстового мода

:

Активирует командную строку

wq

Запишем изменения и выйдем из текстового редактора

Склонировать репозиторий

ssh-ключи

image

Две половинки ключа: одна половинка сохраняется в том месте, куда скачивается что-то с удаленного сервера, а друга сохраняется на этом сервере

ssh-keygen -t rsa -b 4096

image

id_rsa.pub

В гитлабе

image

git

git clone + [clone with ssh/link]

image

python

image

exit() - выйти

Командная строка является самым эффективным способом работы с ОС. Это окно, где мы можем печатать команды, которые будут выполнены компьютером

Что лежит в текущей или определенной директории

Преимущества

== Консоль == Терминал

Текущие расположение

Используется язык программирования Bash ⭐

image

Устройство серверов

image

Jupyterhub

image

image

image

Без аргумента перенаправляет в домашнюю директорию

mkdir

image

-r: удалит папку

image

Ассиметричное шифрование

Материалы

Как работает?

image

Аналоги emacs, nano, но вим есть всегда

Или vi (новая версия)

ctrl + d

Можно как редактировать, так и создавать новые файлы

git status

image

Понятия

Коммит

Некоторая засечка, которая говорит о том, что что-то сделано и это будет как сохранение

Untracked files

GIT пока не следит за этими файлами, но говорит о том, что они изменены

git add [file]

Говорим гиту, чтобы он следил за файлом, и его можно закоммитить

git commit

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

image

git log

image

Показывает все истории изменений

git diff

Если у файла статус modifed, то показывает разницу по тому, что изменилось в нем

image

Его нужно делать перед коммитом ❗

Каждый коммит это какая-то завершенная стадия работы

Аналогия: сейвы в играх

git push

Отправляет коммиты в облако (репозиторий) на сервер. Нужно перейти по ссылке и смерджить

image

image

Пуш

Репозиторий

Ветка

Работа с ветками

git branch

master (main) - основное текущее состояние удаленного репозитория

git pull

Освежает текущее состояние репозитория при внесении изменений другими людьми (принимает изменения с сервера)

Создать новую ветку

image

Показывает в какой ветке находимся

Поменять ветку

git checkout

image

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

Внести изменения с ветки в master

image

Перейти по ссылке

merge request, чтобы ветку перенести в master

Ветку называют так, чтобы было понятно, кто ее делает и зачем

Workflow

image

Что-то поделали в этой ветке

Если вместо названия файла точка, то добавятся вообще все изменения

image

Затем мерджим ветки через push сначала

Внести изменения с главной ветки в другую

git merge

Сразу смерджить ветку с главной

image

Аналогия: Google Диск

image

Указать данные

image

Пушить без пароля

image

Переименование файла

image

Внести информацию о том, кто делает коммиты

image

Название ветки

имя/что происходит

Откатить изменения к последнему коммиту

image

Конфликты

nano

Развернуть виртуальную среду

python3 -m venv venv

. venv/bin/activate

fetch -- all; reset --hard progin/master

-u

-b

origin <name>

-A

-m

image

HEAD - то, что есть в собственной ветке

Причиной возникновения конфликта является то, что первоначальное состояние, на котором создавалась ветка не равно тому, которое было запулино после изменений кем-то другим того элемента, который изменяют

Терминал в Jupyter

image

Для выхода - q

Удалить ветку

image

git checkout .

Когда merge выполнен, можно переключиться на master и спуллить новые изменения

Просто удаляем то, что не нужно из двух вариантов

cp

image