GIT
Система контроля версий. Позволяет работать совместно, контролировать изменения, чтобы не было конфликтов между правками (строгое версионирование). Она позволяет вернуть то, что было пару версий назад
Командная строка
Команды
Общие
ls
pwd
cd
~ тоже самое, что прописывание пути домашней директории
Сменить директорию
Bash
Текстовый редактор
vim
cat
Выводит содержимое файла
rm
Удалить файл
Как выйти из vim?
i
Активирует Insert mode
esc - выйти из текстового мода
:
Активирует командную строку
wq
Запишем изменения и выйдем из текстового редактора
Склонировать репозиторий
ssh-ключи
Две половинки ключа: одна половинка сохраняется в том месте, куда скачивается что-то с удаленного сервера, а друга сохраняется на этом сервере
ssh-keygen -t rsa -b 4096
id_rsa.pub
В гитлабе
git
git clone + [clone with ssh/link]
python
exit() - выйти
Командная строка является самым эффективным способом работы с ОС. Это окно, где мы можем печатать команды, которые будут выполнены компьютером
Что лежит в текущей или определенной директории
Преимущества
== Консоль == Терминал
Текущие расположение
Используется язык программирования Bash ⭐
Устройство серверов
Jupyterhub
Без аргумента перенаправляет в домашнюю директорию
mkdir
-r: удалит папку
Ассиметричное шифрование
Материалы
Как работает?
Аналоги emacs, nano, но вим есть всегда
Или vi (новая версия)
ctrl + d
Можно как редактировать, так и создавать новые файлы
git status
Понятия
Коммит
Некоторая засечка, которая говорит о том, что что-то сделано и это будет как сохранение
Untracked files
GIT пока не следит за этими файлами, но говорит о том, что они изменены
git add [file]
Говорим гиту, чтобы он следил за файлом, и его можно закоммитить
git commit
После этого перебрасывает в текстовый редактор, в котором нужно написать комментарий к коммиту и через него сохранить изменения
git log
Показывает все истории изменений
git diff
Если у файла статус modifed, то показывает разницу по тому, что изменилось в нем
Его нужно делать перед коммитом ❗
Каждый коммит это какая-то завершенная стадия работы
Аналогия: сейвы в играх
git push
Отправляет коммиты в облако (репозиторий) на сервер. Нужно перейти по ссылке и смерджить
Пуш
Репозиторий
Ветка
Работа с ветками
git branch
master (main) - основное текущее состояние удаленного репозитория
git pull
Освежает текущее состояние репозитория при внесении изменений другими людьми (принимает изменения с сервера)
Создать новую ветку
Показывает в какой ветке находимся
Поменять ветку
git checkout
В ней как бы находится полная копия репозитория из ветки master, поэтому в ней можно не бояться что-то изменять, так как всегда можно откатиться к главной ветке
Внести изменения с ветки в master
Перейти по ссылке
merge request, чтобы ветку перенести в master
Ветку называют так, чтобы было понятно, кто ее делает и зачем
Workflow
Что-то поделали в этой ветке
Если вместо названия файла точка, то добавятся вообще все изменения
Затем мерджим ветки через push сначала
Внести изменения с главной ветки в другую
git merge
Сразу смерджить ветку с главной
Аналогия: Google Диск
Указать данные
Пушить без пароля
Переименование файла
Внести информацию о том, кто делает коммиты
Название ветки
имя/что происходит
Откатить изменения к последнему коммиту
Конфликты
nano
Развернуть виртуальную среду
python3 -m venv venv
. venv/bin/activate
fetch -- all; reset --hard progin/master
-u
-b
origin <name>
-A
-m
HEAD - то, что есть в собственной ветке
Причиной возникновения конфликта является то, что первоначальное состояние, на котором создавалась ветка не равно тому, которое было запулино после изменений кем-то другим того элемента, который изменяют
Терминал в Jupyter
Для выхода - q
Удалить ветку
git checkout .
Когда merge выполнен, можно переключиться на master и спуллить новые изменения
Просто удаляем то, что не нужно из двух вариантов
cp